Suporte a Merb 1.0 na Hospedagem Compartilhada Linux

por em PaaS,Produtos,Tecnologia (1) comentário

A Locaweb suporta todos os principais frameworks open source, em especial os de Ruby. Além do Ruby on Rails agora temos também o suporte a Merb.

Na plataforma Ruby existem diversos frameworks web além do Ruby on Rails. Um deles é o Merb, um framework mais simples e mais flexível. Por exemplo, você pode substituir o ActiveRecord – que é parte obrigatória do Rails – por DataMapper, que implementa uma maneira diferente de lidar com mapeamento objeto-tabela. Ela tenta ser um pouco mais leve e rápida colocando menos módulos padrão no framework, deixando que você mesmo escolha os módulos que quer e conectando-os no seu aplicativo. 

A versão 1.0 acabou de sair, agora no dia 8 de novembro. Se você quiser aprender mais sobre Merb, leia este artigo, que lista 44 links para outros sites com tutoriais e mais explicações.

Se você já sabe usar Merb, já tem uma aplicação desenvolvida e quer hospedá-la, basta fazer o seguinte:

Primeiro, abra o Painel da Locaweb, e configure o apontamento do seu site principal para um diretório dentro do public_html da sua conta (esse diretório ainda não precisa existir):

Agora, transfira sua aplicação para um diretório qualquer dentro de sua hospedagem. Para este exemplo, digamos que sua aplicação se chame “demo”, então, fazendo login via SSH na sua conta, recomendamos criar o seguinte diretório:

mkdir -p rack_app/demo

Então transfira toda sua aplicação para este diretório. 

A aplicação será executada pelo módulo Phusion Passenger, mas para isso ele precisa encontrar um arquivo chamado “config.ru” com o seguinte conteúdo:

require ‘rubygems’
require ‘merb-core’

Merb::Config.setup(:merb_root   => “.”,
                   :environment => ENV['RACK_ENV'])

Merb.environment = Merb::Config[:environment]
Merb.root = Merb::Config[:merb_root]
Merb::BootLoader.run 
run Merb::Rack::Application.new

Este arquivo deve ficar dentro da pasta “rack_app/demo” que você acabou de criar com sua aplicação Merb. Para mais informações sobre esse arquivo, leia este wiki. Finalmente, você precisa criar um link simbólico no diretório public_html, conforme você configurou no Gerenciador de Domínios do Painel.

ln -s ~/rack_app/demo/public ~/public_html/demo

Note que estamos fazendo o link da pasta ‘public’ da aplicação Merb, é assim mesmo que o Passenger funciona.

Pronto, feito isso basta acessar a URL do seu site e sua aplicação já deverá estar carregada. Lembre-se, claro, de configurar corretamente seu banco de dados no arquivo ‘config/database.yml’, lembrando que o banco de dados fica num servidor diferente (veja o e-mail que você recebeu quando ativou seu banco). No arquivo ‘database.yml’ configure ‘host:’ para apontar para o servidor correto.

Além disso, já desenvolva e teste sua aplicação na sua máquina local primeiro e somente depois transfira os arquivos via FTP ou SCP. Se você ainda não conhece Merb, novamente, comece por este artigo. Somente quando estive confortável com a tecnologia transfira para a hospedagem.

 


 

 

Mais uma dica: para saber a versão das Gems no servidor onde está sua conta compartilhada, use o comando “gem list”. Por exemplo, para ver as versões do Merb faça assim:

gem list | grep merb

merb (1.0, 0.9.3)
merb-action-args (1.0, 0.9.3)
merb-assets (1.0, 0.9.3)
merb-auth (1.0)
merb-auth-core (1.0)
merb-auth-more (1.0)
merb-auth-slice-password (1.0)
merb-builder (0.9.8, 0.9.3)
merb-cache (1.0, 0.9.3)
merb-core (1.0, 0.9.3)
merb-exceptions (1.0)
merb-freezer (0.9.5, 0.9.3)
merb-gen (1.0, 0.9.3)
merb-haml (1.0, 0.9.3)
merb-helpers (1.0)
merb-mailer (1.0, 0.9.3)
merb-more (1.0, 0.9.3)
merb-param-protection (1.0)
merb-parts (0.9.8, 0.9.3)
merb-slices (1.0)
merb_activerecord (0.9.13, 0.9.3)
merb_datamapper (1.0, 0.9.3)
merb_helpers (0.9.7, 0.9.3)
merb_sequel (0.9.13, 0.9.3)

Obs: essa é a listagem do dia 11 de novembro de 2008.

Para saber a versão do Ruby on Rails, faça assim:

gem list | grep rails
rails (2.1.1, 2.1.0, 2.0.4, 2.0.2, 1.2.6, 1.2.3)

Ou seja, temos suporte a todas essas versões de Rails simultaneamente, na mesma máquina.