Se você não tem Linux no computador, escolha uma distro (recomendo Debian -- que é a que eu uso -- mas a mais populares atualmente são a Linux Mint, o Ubuntu e o Fedora), baixe (ou baixe, baixe ou baixe) e instale (ou instale, instale ou instale).
Apesar de existirem tantos tutoriais e guias a respeito, o processo de instalação (pelo menos do Ubuntu e do Debian) é bastante simples e qualquer um que alguma vez já tenha instalado alguma coisa a partir de um CD (visto que hoje os CD's andam um pouco em desuso) não encontrará muita dificuldade em fazê-lo.
P.S.: os próximos passos serão mais facilmente executados no Ubuntu (que é baseado no Debian) ou no próprio Debian.
O Ruby é necessário por que o projeto em que as modificações serão feitas é um projeto Rails (um framework de desenvolvimento web desenvolvido em Ruby). Não é necessário que você saiba programar em Ruby ou conheça o framework para realizar modificações -- visto que, provavelmente, você só vai querer alterar as partes do projeto relativas a front-end (isto é, HTML, CSS e Javascript). Mesmo assim, fazer alguma coisa em Ruby é bem simples.
Instalação do Ruby 1.9.3/Rails 3 usando o RVM
$ sudo apt-get install libssl-dev libreadline6-dev zlib1g-dev
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
$ source .bash_profile
$ rvm get head
$ rvm install 1.9.3
$ rvm use 1.9.3
$ rvm --default use 1.9.3
Obs: O RVM vai mostrar um comando no prompt para instalar alguns pacotes de desenvolvimento, copie e cole e aguarde instalar
$ gem install rails --version 3.2.11
O Git é o controlador de versões utilizado para fazer o download do projeto (pull), bem como seu upload (push). Não sabe o que é isso?
$ sudo apt-get install git-core
Obs: Configurar o git e as chaves SSH de acordo com este tutorial do GitHub
http://github.com/guides/providing-your-ssh-key
$ sudo apt-get install mysql-client mysql-server libmysqlclient-dev
Obs: O SQLite3 é um SGBD portátil. É lento mas bem menos custoso que o MySQL. Geralmente é a opção default quando se gera um projeto rails.
$ sudo apt-get install libsqlite3-dev
$ sudo apt-get install postgresql
Obs.: você precisa fazer parte da lista de colaboradores do projeto no Heroku e ter configurado suas keys devidamente (veja este artigo no Heroku se estiver tendo problemas com isso). Para fazer o download pela primeira vez, usa-se o comando Git clone.
$ git clone [email protected]:evening-brook-3751.git quince-site
Isso irá criar o diretório quince-site
com todos os arquivos do projeto nele.
Edite os arquivos que desejar e execute
$ rails s
para iniciar o servidor Rails. A configuração default do servidor local é rodar em localhost:3000
.
Dica: configure seu terminal para que o git forneça a saída com fontes coloridas.
O diretório criado (quince-site
) é um repositório git. Isso quer dizer que você pode rodar vários comandos do controlador de versões quando estiver navegando nele ou em seus subdiretórios. Um comando muito utilizado é
$ git status
Isso irá listar de forma bastante inteligível o status atual do repositório em relação ao que já foi colocado em stage (através do comando git add
). Assim que você modificar qualquer coisa no projeto e der um git status
, os arquivos modificados serão listados. O comando git diff
irá exibir as modificações deitas em cada arquivo.
Uma vez que as alterações desejadas foram realizadas, usa-se o comando git add
para adicionar os arquivos modificados ao stage do controlador de versões. Você pode indicar cada arquivo que deseja adicionar de maneira explícita git add ../caminho/para/o/arquivo.rb
(por exemplo) ou adicionar todos os arquivos modificados com
$ git add .
$ git commit -m "Mensagem do commit (o que você fez)"
Por exemplo:
$ git commit -m "Atualiza logotipo do site"
Isso é feito através do comando git push
. Para ver quais repositórios remotos estão associados ao seu repositório git local
$ git remote -v
Você deve ver algo parecido com
heroku [email protected]:evening-brook-3751.git (fetch)
heroku [email protected]:evening-brook-3751.git (push)
Isso indica o nome do remoto (no caso, Heroku) e o seu endereço. Para fazer o upload de suas modificações para o Heroku e dar deploy da aplicação (o que é feito automaticamente pelo Heroku), execute
$ git push heroku master
A título de informação: master
indica o branch para o qual o push está sendo feito. É possível ter vários branches em um mesmo repositório. Para listar todos os branches, use
$ git branch
Isso irá listar todos os branches que estão no seu repositório local. Podem existir branches remotos que não são listados pelo comando acima. Para listá-los, basta fazer
$ git branch -a
Para dar checkout (isso é, mudar o estado do seu repositório para o estado de um outro branch -- remoto ou não), execute
$ git checkout <nome do branch>
Para criar um novo branch, basta executar o seguinte comando:
$ git branch nome-do-novo-branch
Supondo que tenhamos criado o branch como feito acima, podemos dar checkout assim:
$ git checkout nome-do-novo-branch
Há um atalho para realizar as duas ações acima (criar um novo branch e dar checkout) com um único comando:
$ git checkout -b nome-do-novo-branch
Uma vez que dermos checkout para nome-do-novo-branch
a partir do branch master
, nome-do-novo-branch
assumirá o estado de master
. Modificações podem ser feitas, então, ao nosso novo branch e posteriormente reunidas ao código do branch master (o que é uma prática de versionamento bastante comum). Para visualizar as diferenças de um branch em relação a outro: (supondo que estamos trabalhando em nosso novo branch)
$ git diff master
Isso irá mostrar todas as diferenças entre os arquivos do novo branch e o anterior. Para levar as modificações do novo branch ao branch master
é só fazer um merge
. Estando no branch master
(se não estiver, git checkout master
):
$ git merge nome-do-novo-branch
Isso irá mesclar o conteúdo do branch nome-do-novo-branch
ao conteúdo do master
. Podem ocorrer conflitos. Para resolvê-los, veja este artigo.
Aqui.