Uso prático do Git e Laravel 4

Olá Mundo!

Mais uma vez, uma dica relacionada ao Laravel 4 teve como objetivo me ajudar a acompanhar o que estou fazendo e espero ajudar os outros.

Meu projeto final é refazer um site de e-commerce construído em Joomla / VirtueMart que está me deixando maluco aos poucos. Não tenho limites reais além da minha paciência, então descobri que poderia usar a ocasião para aprender um framework PHP e talvez um JS ao longo do caminho.

Depois que comecei a me documentar, percebi que não queria começar do zero e encontrei o andrew13 / Laravel-4-Bootstrap-Starter-Site .

Essa seria minha base, e como já havia um blog em destaque, que não preciso para meu projeto final, imaginei que poderia fazer uma espécie de template base para projetos futuros, basicamente precisaria de:

  • Autenticação
  • Páginas / blogs / comentários
  • Páginas de produtos / funcionalidade do carrinho de compras
  • Classificados
  • Painéis de administração para controlar tudo isso

E então eu apenas usaria as partes do código necessárias para o projeto específico.
A maior parte disso já está compilado no site inicial do bootstrap, e terei apenas que mexer no que já está lá para fazer as novas funções que desejo.

Quero usar o git para controlar a versão do meu projeto e me manter atualizado facilmente com o código do site inicial de bootstrap e o código base do laravel.

Uma introdução e tanto! Vamos em frente.

O objetivo final é ter um repositório local do projeto que possa puxar do Bootstrap-Starter-Site quaisquer atualizações do código, e também puxar atualizações do Laravel para se manter atualizado. Em seguida, ele precisa ser enviado a um weber de teste, um Linode no meu caso. Assim que o código estiver pronto para a produção, ele é enviado do linode para o servidor de produção.

1. Configurando nossos controles remotos Git

Primeiro, vamos obter uma nova cópia do Bootstrap-Starter-Site:

git clone git://github.com/andrew13/Laravel-4-Bootstrap-Starter-Site.git mysite

Agora vamos configurar nossos diferentes controles remotos:

cd mysite
git remote rename origin starter

git remote
add laravel git://github.com/laravel/laravel.git
git remote
add staging ssh://git@bitbucket.org/username/mysite.git

Primeiro, renomeamos o controle remoto de origem do qual clonamos inicialmente para o inicial e, em seguida, adicionamos nossos outros dois controles remotos, o repositório oficial de laravel e nosso repositório de teste privado. Meu linode irá então puxar deste repositório de teste. Isso me permite fazer um backup do meu repositório mais atual.

Por enquanto, não vou me preocupar com a opção de rastreamento do Git, já que estarei especificando os remotos nas solicitações de push e busca do git pull.

2. Nossa primeira fusão

Provavelmente exigirá a resolução de conflitos, vamos começar alterando uma configuração git:

git config merge.conflictstyle diff3

O que isso faz é adicionar marcadores de conflito nos arquivos que têm as informações de ancestral comum, bastante úteis às vezes:

<<<<<<<
changes made on my branch

|||||||

the common ancestor version

=======

changes made on the branch i'm merging

>>>>>>>

Então, vamos ver como isso funciona:

git fetch laravel
git merge laravel
/master
git status

git status irá listar os arquivos conflitantes, agora edite-os em seu editor favorito. Assim que um conflito de arquivo for resolvido, marque-o usando git add filename .
Você pode continuar verificando quais arquivos ainda têm conflitos com o status git . Assim que estiverem todos resolvidos, faça um rápido commit:

git commit -m "merge conflicts fixed"

Então agora nosso branch master local é uma cópia do Bootstrap-Starter-Site, mas está atualizado com o código mais recente do Laravel, legal, vamos ter certeza de que funciona e configurar nossos diferentes ambientes.

3. Definição de ambientes

Vamos começar concluindo a instalação do Laravel:

composer install

Enquanto o composer está fazendo isso, vamos criar rapidamente nosso banco de dados local e seu usuário:

mysql -u root -p
create database mysite
;
grant all privileges on mysite
.* to username@localhost identified by 'password';
exit;

Feito, muito mais rápido do que usar phpmyadmin;)

Você deseja editar bootstrap / strat.php e fazer com que sua variável $ env tenha uma aparência semelhante a esta:

$env = $app->detectEnvironment(array(

'local' => array('local.*','*.local'),
'staging' => array('*.staging-server.org'),
'production' => array('*.com'),
));

Altere o que quiser, lembre-se de que você também pode usar o nome do host da máquina para especificar o ambiente, não apenas partes da url. Você precisará especificar o nome do host para usar o artisan sem o argumento –env.

Agora crie novas pastas em app / config, com o nome de seus diferentes ambientes. Não queremos que os arquivos nessas pastas sejam gerenciados pelo git, também não queremos os ativos compilados, então vamos editar o diretório raiz do repositório .gitignore e adicionar:

/app/config/local/*
/app/config/staging/*

/app/config/production/*

/public/assests/compiled/*

Lembre-se, comprometa-se frequentemente:

git add .gitignore
git commit
-a -m "setup environments in bootstrap/start.php"

Desta vez eu adicionei manualmente .gitignore, mas usei o argumento -a para o commit que adicionará automaticamente bootstrap / start.php que modificamos anteriormente para nós. Legal!

Agora crie um app.php na pasta app / config / local , precisaremos apenas de algumas linhas nele:

<?php

return array(
'url' => 'http://mysite.local',
'timezone' => 'UTC',
'key' => 'GENERATE A KEY AND PASTE IT HERE',
'providers' => array(
/* Uncomment for use in development */
// 'WayGeneratorsGeneratorsServiceProvider', // Generators
// 'BarryvdhLaravelIdeHelperIdeHelperServiceProvider', // IDE Helpers
),
);

Edite-o como achar melhor. Faça o mesmo para o arquivo app / config / local / database.php :

<?php

return array(

'connections' => array(

'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mysite',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);

Finalmente, faça isso para todos os outros arquivos de configuração que editar, como mail.php.
Neste ponto, o status do git não deve mostrar nenhuma mudança ou você fez algo errado no arquivo .gitignore .

Isso resume tudo por enquanto. Pode adicionar mais em breve.

4. Faça o laravel funcionar

Precisamos tornar certas pastas graváveis ​​pelo servidor da web. O primeiro é um requisito do laravel, o segundo do Basset, um de nossos plugins que precisa compilar e escrever o css para o servidor quando rodando em ambientes específicos.

chmod -R 777 app/storage
chmod
-R 777 public/assets/compiled

Execute suas migrações e sementes:

php artisan migrate
php artisan db
:seed

Navegue até o seu servidor da web local e ele deverá exibir uma página inicial de blogs!