Colocar Seu App Online com OpenShift
Criado por Katie Miller, @codemiller
Traduzido por Marcela Oliveira, @magaeu
Utilizando o OpenShift
OpenShift é uma Plataforma como Serviço (PaaS) em computação em nuvem que facilita a implantação de aplicações online. Ele é uma plataforma de código aberto e escrito em Ruby.
Para começar crie uma conta Online no OpenShift, que permite que você adicione três aplicações online de graça. Uma vez cadastrado, instale o RHC Client Tools do OpenShift para executar os comandos abaixo no terminal:
As instruções acima presumem que você já tenha instalado o Ruby utilizando RVM ou RailsInstaller. Se você utilizou outra abordagem, há mais informações sobre como instalar o RHC em outras configurações nesse guia (talvez seja necessário executar sudo gem install rhc
).
COACH: Fale sobre os benefícios de utilizar um PaaS como o OpenShift quando comparado aos servidores tradicionais. Fale sobre SSH e o porquê é necessário fazer o upload da chave pública para que ocorra uma comunicação segura.
Preparando sua aplicação
Criar uma aplicação OpenShift
Nós vamos criar uma aplicação Ruby OpenShift com banco de dados PostgreSQL utilizando um modelo de uma aplicação Rails OpenShift como ponto de partida. Antes de iniciarmos, através do terminal, mude para o diretório onde se encontra o código da sua aplicação railsgirls
, provavelmente chamado de projects
. Caso você esteja no diretório railsgirls
, o comando cd
abaixo irá mudar o diretório; caso não, substitua por outro comando cd
.
A saída para o comando pwd
ou present working directory
deve mostrar que você está no diretório projects
(ou qualquer outro nome que você tenha dado ao seu diretório principal). Para criar uma aplicação OpenShift em nuvem e fazer uma cópia local dos arquivos que serão criados, execute o seguinte comando em seu terminal.
NB: Esse comando é para aqueles que utilizam Ruby 2.x e Rails 4. Se você instalou o Ruby 1.9.x, substitua ruby-2.0
no comando por ruby-1.9
. Para o Rails 3, substitua o --from-code
pela URL https://github.com/openshift/rails-example.git
.
Se aparecer uma mensagem como Tem certeza que quer continuar a conexão (sim/não)?
(Em inglês: Are you sure you want to continue connecting (yes/no)?
), digite sim (yes)
e aperte enter.
A saída do terminal deve conter a URL; abra a janela do navegador e digite a URL da aplicação para visualizar o modelo da aplicação Rails (a URL terá o seguinte formato http://openshiftapp-yourdomain.rhcloud.com).
COACH: Explique o que é o Git e o porquê nós usamos sistemas de controle de versão.
Adicionar controle de versão
Nós temos agora um modelo de aplicação rodando em nuvem, mas só precisamos de pequenos pedaços desse código base. Antes de copiarmos os bits que precisamos, devemos colocar nossa aplicação Rails Girls sob controle de versão com o Git.
Retorne ao diretório da aplicação railsgirls
e inicialize o diretório como um repositório do Git com o seguinte comando:
Nós não queremos que as imagens que foram carregadas durante o desenvolvimento da aplicação sejam parte do nosso repositório, então execute o seguinte comando para que o Git ignore esses arquivos:
Adicione e comite todos os arquivos da sua aplicação no repositório do Git com o seguinte comando:
COACH: Explique os comandos do Git utilizados e o .gitignore.
Copiar código da aplicação modelo
Nós precisamos do diretório .openshift
e arquivo config/database.yml
da aplicação modelo para que sua aplicação Rails possa rodar no OpenShift. Copie esses arquivos do diretório openshiftapp
contido no diretório railsgirls
. Você pode utilizar o Windows Explorer ou outra ferramenta gráfica de gerenciamento de arquivos para realizar essa etapa, ou pode executar os seguintes comandos no diretório railsgirls
a partir do seu terminal:
Verifique se a etapa de cópia dos arquivos funcionou olhando o diretório da aplicação railsgirls
. Agora deve haver um subdiretório chamado .openshift
. Abra o arquivo config/database.yml
; ele agora deve agora conter as variáveis de ambiente do OpenShift como OPENSHIFT_APP_NAME
. Se seu arquivo database.yml
não tiver variáveis assim, tente abrir .openshift/config/database.yml
ou openshiftapp/config/database.yml
em seu editor de texto e copie o conteúdo do arquivo.
Adicione e comite suas novas mudanças no Git com os comandos abaixo.
Mudar o banco de dados
A próxima etapa é mudar nosso banco de dados do Rails Girls do SQLite para PostgreSQL. Abra o arquivo Gemfile
da sua aplicação e substitua:
por
Execute um bundle para configurar as dependências da sua aplicação:
Em algumas plataformas, esse comando pode gerar versão específicas da plataforma que podem gerar problemas para sua aplicação quando for tentar enviá-la (push) para o ambiente em nuvem. Para prevenir esse problema, abra seu arquivo Gemfile.lock
e verifique as versões das Gems ‘sqlite3’ e ‘pg’. Se elas possuirem um sufixo específico da plataforma, como -x86-mingw32
, remova o sufixo (ex. mude pg (0.16.0-x86-mingw32)
para pg (0.16.0)
e sqlite3 (1.3.8-x86-mingw32)
para sqlite3 (1.3.8)
). Salve e feche o arquivo, e execute o comando de bundle novamente antes de continuar.
Adicione e comite suas mudanças no Git:
COACH: Fale sobre banco de dados relacionais e as diferenças entre SQLite e PostgreSQL.
Implantar a aplicação no OpenShift
Agora estamos prontos para implantar a aplicação Rails Girls no OpenShift. Nós precisamos informar ao repositório do Git para enviar (push) o código. Para obter a localização do seu repositório no OpenShift execute o seguinte comando e copie a URL que será exibida como saída.
Agora execute os seguintes comandos, substituindo o texto SSH com a sua URL do Git. Nós estamos utilizando ‘-f’ aqui para forçar que o Git apague todo o histórico da aplicação atual no repositório do OpenShift, o qual contém o modelo da aplicação Rails. Quando você estiver enviando futuras mudanças, você só precisa utilizar ‘git push’.
Atualize a aplicação no seu navegador para ver o resultado.
COACH: Fale sobre o Git remoto.
Crédito extra
Parabéns! Sua aplicação Rails está online para todo o mundo admirar. As seguintes seções servirão para explicar passos opcionais para você melhorar e compartilhar sua aplicação.
Armazenar imagens adicionadas
A aplicação deve estar muito boa agora, mas existe um pequeno problema ocasionado pela natureza temporária do ambiente de implantação. Quando nós enviamos uma nova versão da aplicação, tudo o que está armazenado na cópia do repositório do OpenShift é removido para dar espaço para novos arquivos. Isso inclui as imagens carregadas pelos usuários. Para resolver esse problema, nós podemos armazenar os arquivos num diretório do OpenShift. O caminho para esse armazenamento pode ser salvo em uma variável de ambiente.
COACH: Explique a motivação para utilizar variáveis de ambiente.
O diretório onde as imagens são atualmente armazenadas é o diretório da aplicação, que será apagado quando refizermos a aplicação. Para mudar o diretório de armazenamento, abra app/uploaders/picture_uploader.rb
e substitua
por
Agora as imagens carregadas serão armazenadas no diretório, porém elas ainda estarão disponíveis na mesma URL que estávamos utilizando anteriormente. Para fazer isso funcionar, nós também precisáremos adicionar um link simbólico no sistema de arquivo da localização do repositório para a localização real de armazenamento. Para realizar essa etapa, abra .openshift/action_hooks/build
e adicione o seguinte código:
Essa ação de linkar o código será executada toda vez que a aplicação do OpenShift for construída, então o link entre os diretórios sempre estará disponível quando necessário.
Comite suas mudanças e as envie para o repositório em nuvem:
As imagens carregadas antes dessa mudança ser realizada não serão visualizadas, mas tudo que for carregado a partir de agora será armazenado entre as reconstruções da aplicação.
COACH: Explique links simbólicos.
Enviar o código para o GitHub
Agora que sua aplicação está sobre controle de versão com o Git, você pode querer compartilhar uma cópia dela em um website que utilize Git como o GitHub. Para enviar seu código para o repositório do GitHub, crie um repositório no GitHub e copie o link HTTPS (algo como https://github.com/username/reponame.git).
Explore o repositório da sua aplicação OpenShift no terminal e execute os seguintes comandos, substituindo o texto HTTPS com a URL copiada anteriormente:
A branch ‘master’ local do seu repositório será enviada para o GitHub. Acesse o website do GitHub e verifique se está tudo certo.
COACH: Fale sobre as branches do Git e os benefícios do código aberto.
Conclusão
Sua aplicação Rails agora está rodando em nuvem no OpenShift. Você pode enviar quaisquer outras mudanças que você queira e compartilhar a URL e mostrar sua aplicação para seus amigos.