Estes dias estava instalando na empresa onde trabalho um servidor para desenvolvimento e testes, então ao instalar o Webmin (Gerenciador web de servidores), vi a possibilidade de criar um modulo que gerencia-se a criação, edição e remoção de RailsBaseURI e RackBaseURI para o passenger (já estava cansado de adicionar editando diretamente o arquivo), abaixo farei uma explicação de como instalá-lo.
Primeiramente desenvolvi o modulo visando apenas trabalhar com um único virtual host apache, provavelmente mais tarde criarei um que possibilite vários, mas isso é só no futuro.
Como pré requisitos para o modulo tem-se, ter o apache2 instalado, possuir o passenger já funcionando em sua maquina (caso não tenha instalado ainda veja este tutorial), e obviamente ter o webmin instalado.
Crie um o arquivo vazio chamado rails.conf na pasta /etc/apache2 , seguindo o comando abaixo.
sudo touch /etc/apache2/rails.conf
Adicione então ao seu virtualhost a seguinte linha:
Include /etc/apache2/rails.conf
Assim fazendo com que sejam rodados as configurações presentes no arquivo.
Então baixe no link abaixo o arquivo com o módulo.
passenger.wbm.gz.doc (Como o wordpress não permite postar outras extensões renomeie o arquivo para passenger.wbm.gz )
Então abra o webmin acesse Webmin Configuration >> Webmin Modules selecione From uploaded file e encontre o arquivo e clique em install module.
Pronto agora no menu ao lado na categoria server irá aparecer passenger.
Qualquer duvida me poste um comentário.
Obrigado
Arquivo da categoria ‘Ruby on Rails’

Plugin para Passenger no Webmin
07-08-2009
Problemas ao rodar o rails 2.2 no passenger
22-04-2009Uma dica rápida, mas que pode ajudar muito, apartir da versão 2.2.0 do rails foi adicionado uma configuração que especifica a pasta padrão da qual é rodada a aplicação, ajudando assim a se ter várias aplicações em um unico domínio.
Por padrão a aplicação rails pensa que está no / do dominio, gerando o seguinte erro caso não esteja.
Exemplificando ao acessar http://www.meuservidor.com.br/minha_aplicacao .
Routing Error
No route matches "/minha_aplicacao" with {:method=>:get}
Então para resolver isto é necessário apenas adicionar a linha abaixo ao envoriment.rb trocando o “/minha_aplicacao” pela pasta onde ela esta.
config.action_controller.relative_url_root="/minha_aplicacao"
Espero ter ajudado.

Passenger: Error message: No such file or directory – /nonexistent
18-12-2008Ontem ao instalar o sistema no servidor de um cliente, me deparei com o seguinte erro :
Error message:
No such file or directory - /nonexistent
Já tinha visto este erro, mas não sabia como resolvê-lo e nem porque ele acontecia.
Ele existe pois alguns serviços do pessenger estavam sendo rodados por um usuário chamado nobody, e ao procurar a pasta “home” deste usuário, o ruby recebia “/nonexistent” como sendo sua pasta.
Update: Existe uma forma melhor de resolver isto, do que a apresentada abaixo, veja ela Aqui. Obrigado Walter.
A solução encontrada pra esse erro foi criar a pasta /nonexistent com o comando com permissões de super usuário.
# mkdir /nonexistent
Esta foi a solução mais rápida encontrada, para ser resolvido o problema, mas acho que deve existir uma forma melhor de corrigi-lo.
Espero ter ajudado.

Usando/ Instalando outras versões do rails
11-12-2008Mesmo após o lançamento do rails 2.2 muitos servidores e programadores ainda usam o rails 1.2, pois tem maior número de servidores que o suportam, ou porque já possuem um sistema desenvolvido nesta versão.
Para instalar versões mais antigas do rails utilize o comando:
gem install rails -v VERSAO
Ou seja instalar a versão 1.2.6 use:
gem install rails -v 1.2.6
Atenção: Este comando necessita de permissões de administrador.
Após instalado, para criar uma aplicação com uma das versões anteriores utilize na seguinte sintaxe:
rails _VERSAO_ nome_da_aplicacao
No caso de uma aplicacao rails 1.2.6 o comando ficaria assim.
rails _1.2.6_ blog

Dicas para Integrações/Exportações com Ruby on Rails
27-11-2008Por ter suporte a diferentes tipos de bancos de dados, ruby / ruby on rails se torna uma ótima ferramenta para fazer integrações/exportações com bancos legados.
Mas aí surge o grande problema, normalmente bancos de dados legados, não seguem o padrões para os quais o Active Record foi desenvolvido, mas para isso foram desenvolvidos alguns itens dentro do própria classe ActiveRecord para você poder adaptar o seu Ruby/Ruby on Rails ao seu velho banco de dados legado.
Entre elas estão:
set_table_name
Este método faz com que o model acesse a tabela informada. Ele torna-se necessário pois como padrão o model tenta acessar a tabela que tem o mesmo nome que o seu arquivo/classe pluralizado, e também para poder criar models com nomes mais faceis e de melhor entendimento.
set_table_name "nome_da_tabela"
set_primary_key
Este método faz com que o model reconheça um campo primário diferente de id que é o padrão.
set_primary_key "nome_do_campo_primary_key"
set_inheritance_column
Outra coisa normal a se deparar em uma importação/exportação é com o seguinte erro:
ActiveRecord::SubclassNotFound: The single-table inheritance mechanism failed to locate the subclass: 'folder'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Nodulo.inheritance_column to use another column for that information.
Ele aparece pois um dos campos da tabela possui o nome reservado pelo ActiveRecord, no caso acima o mais conhecido, o aparecimento do campo ‘type’, quando se está desenvolvendo o banco de dados do zero aconselha-se a trocar o nome do campo, mas quando temos de fazer o uso da tabela e não podemos modificar nada tempos um “problema”. Os nomes reservados são palavras utilizadas neste caso pelo activerecord para dar informações sobre o campo. No caso do type ele serve para informar qual é a o tipo do campo (subclasse).
Para solucionar isso utiliza-se o método abaixo para trocar o nome do campo da tabela, sem necessitar alterar realmente no banco de dados.
set_inheritance_column "novo_nome_para_o_campo"
Abaixo um exemplo de utilização.
Exemplo:
class Nodulo < ActiveRecord::Base
set_table_name "node"
set_primary_key "node_id"
set_inheritance_column "tipo"
end

Problemas com o ruby + openssl
28-10-2008Hoje fui testar os passos que comentei em outro post no ubuntu 8.10 , pra verificar se estavam corretos.
Pra não ficar na monotonia resolvi instalar o ruby do source, como eu já sabia que poderia ter problemas na hora de instalar o rubygems com o zlib instalei os pacotes zlib1g e zlib1g-dev, como citado na atualização daquele post.
Continuei feliz da vida instalando, funcionou direitinho o ruby , rubygems e o rails, e quando fui instalar o passenger o gem instalou corretamente mas tive uma feliz surpresa na hora de rodar o comando : sudo passenger-install-apache2-module
Apareceu então a seguinte tela:* GNU C++ compiler… found at /usr/bin/g++
* Ruby development headers… found
* OpenSSL support for Ruby… not found
* RubyGems… found
* Rake… found at /usr/local/bin/rake
* Apache 2… found at /usr/sbin/apache2
* Apache 2 development headers… found at /usr/bin/apxs2
* Apache Portable Runtime (APR) development headers… found at /usr/bin/apr-1-config
* fastthread… found
* rack… found
Pesquisei um pouco e encontrei em alguns fóruns a dica de instalar os pacotes: libopenssl-ruby1.8, openssl, libssl-dev e libssl0.9.8 , instalei os pacotes e nada.
Lembrei então de que as versões >= 1.8.7 ficam na pasta /usr/local/lib e não na /usr/lib que é a padrão da versão 1.8.6 que está como instável nos repositórios do ubuntu.
Então não teve jeito, desinstalei o ruby, apagando mesmo a pasta /usr/local/lib/ruby e na hora de instalar, adicionei o seguinte:
./configure --with-openssl-dir=/usr/lib
make
sudo make install
Após isso não tive mais problemas, instalei o rubygems, o rails e o passenger.
Espero que isso ajude.
Agradeço pelas visitas… qualquer dúvida é só deixar um comentário.
Obrigado

Primeiro plugin no github…
17-10-2008Hoje disponibilizei no github meu primeiro plugin rails, o what_i_take.
Ele funciona da seguinte forma, ele é um debuger que mostra o valor de algumas variáveis na view.
Assim podendo-se saber quais são os valores passados pelo params e pelo session para a sua view, e alem do mais, desenvolvi ele para ser visualizado através de uma tecla atalho, para não poluir a tela.
Para utilizar ele é só baixar e adicionar o código abaixo em sua view ou então em seu layout.
<%= what_i_take? %>
Segue abaixo uma imagem dele em ação:
O link para o plugin é http://github.com/dannnylo/what_i_take/tree/master , gostaria de saber a opinião e sugestão de vocês.
Obrigado

Tutorial de instalação do Rails com Phusion Passenger (mod_rails) para Ubuntu
28-08-2008Mais um dos milhares e milhares de tutoriais de como instalar, mas as vezes é muito dificil de encontrar um que mostre tudo junto.
Primeiramente deve-se instalar o Ruby e os programas necessários:
sudo apt-get install gcc g++ build-essential zlib1g zlib1g-dev
sudo apt-get install -y ruby1.8 ri1.8 rdoc1.8 rake irb1.8
Deve-se criar os links simbólicos para os executaveis, com os comandos:
cd /usr/bin
sudo ln -s ruby1.8 ruby
sudo ln -s ri1.8 ri
sudo ln -s rdoc1.8 rdoc
sudo ln -s irb1.8 irb
Para verificar se foi realmente instalado corretamente veja se há retorno ao comando:
ruby -v
Agora deve-se instalar o gerenciador de pacotes para o ruby o RubyGems.
Para isso pode-se utilizar-se do comando:
sudo apt-get install rubygems
ou então baixar o pacote mais atual do site e instalá-lo, isso é mais recomendável de se fazer.
E pode ser feito de uma maneira automatizada com os comandos:
LINK=$(wget -qO - http://rubyforge.org/frs/?group_id=126 |grep "rubygems-" -m 1 | sed 's/.*href="//g'| sed 's/".*//g')
VERSION=$(echo $LINK | sed 's/.*rubygems-//g' | sed 's/.t.*//g')
wget http://rubyforge.org$LINK
ARQ=$(echo $LINK |sed 's/.*rubygems-//g' )
tar -xvzf rubygems-$ARQ
cd rubygems-$VERSION
sudo ruby setup.rb
cd /usr/bin
sudo ln -s gem1.8 gem
Para verificar se foi realmente instalado corretamente veja se há retorno ao comando:
gem -v
Com isso se tem todo o ruby pronto para produção, porém está faltando agora o Rails e o Passenger. Para instalar o rails utiliza-se do gerenciador de pacotes RubyGems com o seguinte comando:
sudo gem install rails
Para verificar se foi realmente instalado corretamente veja se há retorno ao comando:
rails -v
Instalação do Passenger
Agora deverá ser instalado algumas dependencias dele:
sudo apt-get install -y apache2-mpm-prefork apache2-prefork-dev libapr1-dev libopenssl-ruby libopenssl-ruby1.8 libssl-dev libssl0.9.8 g++ ruby1.8-dev
E para então instalar o passenger com o RubyGems
sudo gem install passenger
Agora ele está instalado, porém ainda falta instalar o modulo dele do apache.
Deve-se definir duas constantes antes de iniciar a instalação do módulo, são elas HTTPD e APXS2, ulilizando o comando :
export HTTPD=/pasta/do/httpd
export APXS2=/pasta/do/apxs2
No Ubuntu 8.04 e provavelmente nas versões anteriores o httpd é chamado de apache2ctl, abaixo segue o comando com a pasta padrões já inseridas.
export HTTPD=/usr/sbin/apache2ctl
export APXS2=/usr/bin/apxs2
Após definir as constantes instale o modulo apache do passenger utilizando o comando:
sudo passenger-install-apache2-module
Agora o modulo apache do passenger está instalado, faltando apenas a configuração final.
Abre-se o arquivo apache.conf ou o http.conf, no Ubuntu esses arquivos ficam no diretório /etc/apache2, e como dica utilize o arquivo http.conf, pois este até então está vazio.
Insira as seguintes linhas no arquivo:
LoadModule passenger_module /pasta/do/ruby/gems/versao_do_rubygems/gems/passenger-versao_do_passenger_instalado/ext/apache2/mod_passenger.so
PassengerRoot /pasta/do/ruby/gems/versao_do_rubygems/gems/passenger-versao_do_passenger_instalado
PassengerRuby /pasta/do/executavel/ruby1.8
No caso do ubuntu as linhas ficaram:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /usr/bin/ruby1.8
Ainda no mesmo arquivo adicione a seguinte linha:
RailsEnv MODO_DE_EXECUÇÃO
O MODO_DE_EXECUÇÃO deve ser subistituido por:
production #Caso o aplicativo rails já será utilizado para produção
development #Caso o aplicativo ainda esteja em desenvolvimento
Agora faltam somente 2 passos para que sua aplicação rails possa funcionar perfeitamente.
Caso queira que o rails rode um subdiretorio do / do apache altere o arquivo sites-enabled/default do apache a seguinte linha dentro do virtualhosts:
RailsBaseURI /subdiretorio
E faça um link simbólico da pasta public da sua aplicação rails para a pasta / do apache em alguns casos ela fica no /var/www.
cd /pasta/do/root/do/apache
ln -s /pasta/da/sua/app/public subdiretorio
Salve o arquivo.
E finalizando, reinicie o apache com o comando:
sudo apache2ctl restart
E agora é só desenvolver suas aplicações em rails.
Agradeço pela visita, qualquer erro é só falar.

Gedit um bom editor para RoR
25-02-2008Entre os programadores sempre há uma disputa de prefêrencias quando se fala de Editor para uma linguagem. Eu ultimamente tenho utilizado o Gedit, devido a ele ser bem leve e por vir nas distribuições linux que utilizam Gnome ( por exemplo o Ubuntu que utilizo ).
Vou mostrar hoje como deixar o Gedit pronto para trabalhar com o RoR no Ubuntu.
O gedit puro é somente um editor de texto comum, mas utilizando alguns plugins nele, se transformará em uma ótima ferramenta de trabalho.
Para instalar os plugins utilize o comando:
sudo apt-get install gedit-plugins
Depois de instalar este pacote, iremos os habilitar no gedit.
Apos abrir o gedit vá ao menu Editar (Edit) >> Preferências (Preferences), abrirá uma janela, e nesta entre na aba plugins, onde estara a listagem completa de plugins que vc poderá habilitar.
Os plugins que sugiro e que serão muito úteis são:
- Espaços inteligentes
- Fechamento de parenteses
- Painel do Navegador de Arquivos
- Recuar linhas
- Salvador de Sessão
- Terminal Embutido
Depois de habilitar estes plugins, vá na aba View.
E Habilite as opçoes:
- ‘Display line numbers’ do Line Number
- ‘Highlight current line’ do Current Line
Após feto isso clique em fechar.
Se não mostrar o painel lateral e o inferior, habilite a visualização deles no menu “Ver” do Gedit, ou pelas teclas F9 para o painel lateral, e CTRL + F9 para o painel inferior.
Com estas opções você terá um ótimo ambiente de desenvolvimento, é claro que não será um Aptana ou um NetBeans, mas será muito mais leve que estes. E ainda existem muitos plugins para gedit que ajudarão a melhorar sua vida, mas estes são os necessários para ser feliz.

