Archive for July, 2008

Utilizando um repositório git com redMine em seu Shared Host

Publicado em Ruby on Rails em July 10th, 2008 por Vinicius Ebersol – Seja o primeiro a comentar

Se você tem um pequeno projeto e não tem interesse em pagar um VPS para manter seu repositório git rodando com o redMine, configurá-los em sua hospedagem padrão é uma ótima e barata idéia. Eu recém fiz e achei muito simples fazer.

Antes de tudo é necessário que sua hospedagem tenha:

  • acesso disponível via SSH;
  • Ruby on Rails rodando com fcgi ou mod_rails
  • SVN instalado (opcional)
  • Git
  • Gerenciamento de chaves SSH pelo CPanel

Instalando o redMine

A instalação do redMine é muito simples. Basta seguir os passos do próprio site do redMine, clicando aqui e após configurar o redmine de acordo com as suas necessidades.

h3, Criando o repositório Git em sua máquina

Se você ainda não tem um repositório local, é necessário criá-lo, vamos aproveitar e criar uma aplicação Rails para já termos o que enviar ao servidor.

 $cd /home/usuario/workspace
 $rails my_git_project
 $cd my_git_project
 $git init
 $git add *
 $git commit -m "My first commit"

Movendo o seu repositório para o seu shared host

Antes de mais nada é preciso ter em mente que só enviar o seu repositório Git por FTP pode não ter o funcionamento adequado. Para isso, prepare o seu repositório para ser movido.

 $cd ~/workspace
 $git clone - -bare my_git_project my_git_project.git
 $touch my_git_project.git/git-daemon-export-ok

Pronto, agora seu repositório está pronto para rodar em seu shared host. Agora é necessário enviá-lo para o seu host. Acesse por SSH ou FTP o seu shared host e crie um diretório (que eu vou chamar de src) na home de seu shared host, algo como /home/username/. Se você quiser enviar por SCP, faça o seguinte:

 $scp ~/workspace/src/my_git_project.git username@meudominio.com:/home/username/src

Pronto! Seu repositório Git já está no seu servidor e pronto para ser utilizado.

A partir de agora o endereço de seu repositório será algo como:

 $ssh://username@meudominio.com/~/src/my_git_project.git

Teste o seu repositório

 $git clone ssh://username@meudominio.com/~/src/my_git_project.git

Se você fizer isto, será solicitada a senha SSH do seu host. Digite a senha e terá o seu repositório em poucos segundos.

Liberando as suas chaves SSH

Assim como o Github você pode adicionar chaves SSH de sua máquina e de outros desenvolvedores que terão acesso irrestrito sem a necessidade de senha.

Atenção: Não são todos os shared hosts que têm está opção. Posso afirmar que a hospedagem que eu utilizo fornece esta opção.

MUITO IMPORTANTE: Quem tiver acesso irrestrito ao seu repositorio git também tera acesso irrestrito a todos os arquivos e bancos de dados do seu shared host.

Os passos a seguir são referência do meu CPanel.

Para inserir as chaves ssh de seu computador e de terceiros, faça o seguinte:

Para ter uma chave SSH é necessário criá-la, para isso, recomendo que leiam esta página do Github.

 $cd ~/.ssh
 $cat id_rsa.pub

Copie o resultado sem nenhum espaço em branco do início e faça o seguinte:

Procure o item SSH/Shell Access como mostra a imagem abaixo:

ssh_icon

Após clique no botão Manage SSH Keys e clique em Import Key.

Cole a sua chave SSH como mostra a imagem abaixo (Não preencha os demais campos):

import_keys

Após clicar em import, vá à listagem de chaves públicas (Public Keys) e clique em Manage Authorization e após clique no botão authorize.

Pronto! Agora você não precisa mais digitar a senha de seu shared host toda vez que quiser fazer um clone ou enviar seus commits ao repositório.

Bug no FCGI utilizando método POST com :multipart => true

Publicado em Ruby on Rails em July 5th, 2008 por Vinicius Ebersol – Seja o primeiro a comentar

Ontem ao publicar uma demo no ar, penei para descobrir porque eu não conseguia criar um novo produto durante o teste da aplicação. Utilizando o WEBRick eu conseguia criar normalmente. Seria um problema de banco de dados ou da utilização da versão de alguma gem? Além disso, todos os outros formulários de criação funcionavam.

O que será então?

Se trata de um bug no FCGI. Simplesmente quando o método multipart está definido como true, ao tentar cadastrar um dado novo no banco de dados, ele não consegue direcionar o POST para a action create do seu controller. A solução é simples e indolor. No seu form de new faça o seguinte:

<%= error_messages_for :product %>

<% form_for(:product, :url => "#{products_path}/", :html => { :multipart => true }) do %>

  <%= render :partial => 'form' %>

  <p>
    <%= submit_tag "Salvar" %>
  </p>
<% end %>

Note que no lugar de @products eu pus :product, :url => ”#{products_path}/”, isto porque o bug somente ocorre pela falta da barra após o nome do controller. Se a action do form estiver somente ”/products” ele irá entender que você quer acessar a action index e não o create. Com a barra no final da action tudo vai funcionar perfeitamente.

Qualquer dúvida, comente, talvez hajam soluções melhores.

O crédito para o descobrimento deste bug é para o Everton Carpes.

Teste gratuíto do mod_rails na TeHospedo

Publicado em Ruby on Rails em July 5th, 2008 por Vinicius Ebersol – Seja o primeiro a comentar

Ontem foi anunciado aos assinantes da TeHospedo.com.br que haverá oferecimento de hospedagem gratuita para quem quiser testar Rails utilizando o famoso mod_rails.

A hospedagem gratuita estará rodando durante os meses de julho e agosto para que a oferta do serviço seja da qualidade que a TeHospedo já oferece há tantos anos.

O que você terá para utilizar a hospedagem da TeHospedo:

  • Acesso SSH
  • Capistrano 2.4
  • Git e SVN
  • Rails 2.1
  • mod_rails
  • e muito mais…

Maiores detalhes sobre hospedagem Ruby on Rails com o mod_rails, clique aqui.

Se você não deseja utilizar os servidores da TeHospedo para testes e já quer rodar sua aplicação em produção, clique aqui e já tenha a sua conta ativada em menos de duas horas úteis.

A TeHospedo também está oferecendo hospedagem gratuíta para domínios .can.br, confira aqui.