Marcio Trindade

Instalar GEM na DreamHost

Eu utilizo a DreamHost para hospedar o meu blog, pra mim é uma boa empresa de hospedagem, visto que até hoje tive poucos problemas lá, e gostaria de compartilhar com vocês como resolvi um deles.

Você tem uma lista de gems disponível, porém algo que é muito comum é você precisar instalar algumas gems que não tem no servidor. Então você pode instalar estas gems ou dar um freeze delas no seu projeto. Eu considero a primeira a melhor solução. Então quero explicar como fazer isso. A DreamHost nos disponibiliza um tutorial de como fazer isso (inglês) e mostro como isso funciona em português.

Configurando o ambiente

Primeiro você precisa criar um diretório para armazenar as suas gems:

console
cd ~
mkdir .gems

Agora vamos atualizar o seu caminho para utilizar os novos diretórios. Abra o arquivo ~/.bash_profile no seu editor favorito e adicione estas linhas.

~/.bash_profile
export GEM_HOME="$HOME/.gems"
export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"

Instalando as gems

Você precisa criar mais alguns diretórios:

console
mkdir bin lib src

Agora abra o arquivo ~/.bash_profile e adicione estas linhas:

~/.bash_profile
export PATH="$HOME/bin:$HOME/.gems/bin:$PATH"
export RUBYLIB="$HOME/lib:$RUBYLIB"
# this ensures our gem install processes don't get killed by the DreamHost police
alias gem="nice -n19 ~/bin/gem"

Para que estas mudanças tenham efeito execute este comando.

console
source ~/.bash_profile

Agora vamos instalar o rubygems.

console
cd ~/src
wget http://rubyforge.org/frs/download.php/43985/rubygems-1.3.0.tgz
tar xzvf rubygems-1.3.0.tgz
cd rubygems-1.3.0
ruby setup.rb --prefix=$HOME

Então criamos um link simbólico do gens1.8 para gem

console
cd ~/bin
ln -s gem1.8 gem

Verifique se agora está usando o rubygems correto:

console
which gem   # should return /home/USERNAME/bin/gem
gem -v      # should return 1.3.0

Se tudo estiver certo você já pode instalar as suas gems, como por exemplo:

console
gem install rails

Configurando o Rails

Depois que fiz este passo a passo só tive mais um problema, o passenger não conseguia entender que o caminho do meu gem_path havia mudado. Então encontrei uma solução pra isso no Google, que é bem simples, abra o arquivo config/environment.rb dentro da sua aplicação e adicione a linha abaixo antes do require do boot:

config/environment.rb
ENV['GEM_PATH'] = '/home/USERNAME/.gems:/usr/lib/ruby/gems/1.8'
require File.join(File.dirname(__FILE__), 'boot')

ps. Não esqueça de trocar o USERNAME pelo nome do seu usuário.