Abstraindo.com

RSS Twitter Facebook

1
set

Todos já devem ter conferido o tutorial do Brunno sobre como instalar e utilizar o RVM, se não conferiu, confira!

Que tal isolar cada Virtual Host utilizando o apache para isolar o gemset utilizada para cada projeto?

Mãos a massa, você vai precisar de:

  • Apache2
  • Ruby 1.8.7
  • RVM 1.6.32
  • Passenger 3.0.8

* as versões são as que eu estou utilizando neste tutorial

Primeiro vamos decidir qual será o gemset utilizado, já decidiu? No nosso exemplo utilizaremos o gemset ruby-1.8.7-p352@abstraindo, então:

rvm gemset create abstraindo
rvm gemset use abstraindo

Abra seu httpd.conf, este pode estar em algum desse lugares:

  • Linux: /etc/apache2/conf/
  • MacPorts: /opt/local/apache2/conf/
  • Nativo MacOS: /etc/apache2/

Verifique se a seguinte linha está comentada, caso esteja: descomente-a.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Agora abra o arquivo httpd-vhost.conf, adicione as configurações de Virtual Host:

# Abstraindo
<VirtualHost *:80>
    ServerName dev.abstraindo.com
    DocumentRoot "/wolcan/rails_app/abstraindo/public/"
    RailsEnv "development"
    <Directory /wolcan/rails_app/abstraindo/public/>
        Options -MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Certo?

Agora vá ao terminal/console e digite:

rvm gemset use abstraindo

Caso você tenha mais de uma versão de Ruby instalado na sua máquina será necessário informar a versão do Ruby anteriormente.

Reinicie o apache e teste: http://dev.abstraindo.com

Funcionou? Caso você não tenha funcionado, verifique se a pasta existe ou se você não cometeu algum erro de digitação.

Agora vamos isolar o virtual host em um gemset específico, abra novamente o arquivo httpd-vhost.conf e adicione as seguintes linhas para nossa configuração:

# Abstraindo
<VirtualHost *:80>
    ServerName dev.abstraindo.com
    DocumentRoot "/wolcan/rails_app/abstraindo/public/"
    RailsEnv "development"
    <Directory /wolcan/rails_app/abstraindo/public/>
        Options -MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

    SetEnv GEM_HOME /Users/Wolcanus/.rvm/gems/ruby-1.8.7-p352@abstraindo
    SetEnv GEM_PATH /Users/Wolcanus/.rvm/gems/ruby-1.8.7-p352@abstraindo:/Users/Wolcanus/.rvm/gems/ruby-1.8.7-p352:/Users/Wolcanus/.rvm/gems/ruby-1.8.7-p352@global

</VirtualHost>

No exemplo, estou definindo o seguinte:

GEM_HOME: Apontando para meu gem_path do gemset ruby-1.8.7-p352@abstraindo

GEM_PATH: Aponto para o gemset do @abstraindo, ruby-1.8.7 e para o gemset @global

Salve o arquivo, reinicie o apache e teste!

Funcionou? É isso aí! Qualquer dúvida é só comentar =)

Fontes:

Isolating gem sets under Passenger with RVM

RVM FAQ

, , , ,

00:41 - 1 de setembro de 2011
30
ago

Ontem me deparei com a seguinte questão: eu precisava servir um arquivo no Rails para download.

Isso pode ser feito, utilizando o código abaixo:

send_file("path/to/file.txt")

Mais sobre send_file

No contexto development funcionava perfeitamente, mas na produção o arquivo baixado tinha 0 byte, ou seja, vazio. Como resolver?

No arquivo /config/environments/production.rb, comente a seguinte linha:

  # Specifies the header that your server uses for sending files
  #config.action_dispatch.x_sendfile_header = "X-Sendfile"

Esta linha é utilizada para configurar o header do x_sendfile, algumas hospedagens especializadas em Rails determinam essa opção naturalmente, mas você pode alterar utilizando a configuração do Rails. Comentando essa linha, iremos utilizar o x_sendfile_header da própria hospedagem, no meu caso Locaweb.

É isso aí!

Dados sobre o ambiente:

  • SO: Linux Red Hat AS 5
  • Apache2
  • Rails 3.0.9
  • Ruby 1.8.7
  • Hospedagem: Locaweb compartilhada

Veja também:

15:14 - 30 de agosto de 2011
29
ago

Mais uma dica rápida para ficar documentado ;)

Quando se depararem com este erro: ‘Uninitialized constant project_name’ utilizando Phusion Passenger, tente resolver com o seguinte comando:

rake rails:update

O que ele faz?

Atualiza:

  • configs
  • scripts
  • public/javascripts

Tive esse problema tentando instalar jQuery-Rails, provavelmente alguma gem corrompeu durante a instalação e acabou atrapalhando meu projeto.

Muito interessante ter um rake para isso =)

Dados sobre meu ambiente:

  • SO: Mac OS 10.7.1
  • Phusion Passenger 3.0.8
  • Apache2
  • Ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.0.0]
  • Rails 3.0.9

Fontes:

23:00 - 29 de agosto de 2011


Stop SOPA