Implantando Sinatra app no ??Dreamhost / Passenger com gemas personalizados
Pergunta
Eu tenho um aplicativo de Sinatra que eu estou tentando executar no Dreamhost que faz uso de pônei para enviar e-mail. A fim de obter o aplicativo instalado e funcionando no início (antes de adicionar pônei), eu tive que gem unpack rack
e gem unpack sinatra
para o vendedor / diretório, então esta foi a minha config.ru:
require 'vendor/rack/lib/rack'
require 'vendor/sinatra/lib/sinatra'
set :run, false
set :environment, :production
set :views, "views"
require 'public/myapp.rb'
run Sinatra::Application
Já fiz gem install pony
e gem unpack pony
(em vendor /). Depois, eu tentei adicionar require 'vendor/sinatra/lib/pony'
para config.ru só para ter passageiros queixam-se do pônei dependências (tipos MIME, TMail) não foi encontrado qualquer um!
Não tem para ser a melhor maneira de usar outras pedras preciosas e tom baixo aqueles longo, feio requires
, redundante. Quaisquer pensamentos?
Solução
Eu recomendo criar o seu próprio caminho jóia "em algum lugar", em seguida, adicioná-lo em sua config.ru
como:
ENV['GEM_PATH'] = xxx
Gem.clear_paths
, em seguida, instalar suas gemas em que
Outras dicas
Instale gemas do rubi no dreamhost
http://c.kat.pe/post/ Instalando-rubi-jóias-on-dreamhost /
Alterar config.ru (funciona para Sinatra 1.0)
require 'rubygems'
require 'vendor / sinatra / lib / sinatra.rb'
ENV['GEM_HOME'] = '/home/username/.gems'
ENV['GEM_PATH'] = '$GEM_HOME:/usr/lib/ruby/gems/1.8'
require 'rubygems'
Gem.clear_paths
disable :run, :reload
set :environment, :production
require 'yourapp'
run Sinatra::Application
Espero que ajude alguém.
Eu estou usando pônei e um monte de outras pedras preciosas para o meu Sinatra. Ele deve funcionar bem para você também. É apenas essas duas linhas (GEM_HOME e GEM_PATH) você tem que adicionar em sua configuração.
Levei séculos para descobrir que você pode simplesmente usar "gem install Sinatra" e gem vai descobrir (porque os diretórios do sistema são somente leitura) que você vai precisar usar uma jóia local diretório de instalação. A partir de agora, não parece haver necessidade de definir qualquer ambiente especial. Ele descobre a utilizar $ HOME / .gem como o caminho jóia local e tudo isso funciona. Não há necessidade de exigir 'vendedor / stuff' em tudo. Eu achei que eu tinha para adicionar $ HOME / .gem / ruby ??/ 1.8 / bin para o meu caminho, a fim de executar binários instalados por pedras preciosas.
Aqui está a minha config.ru (para Dreamhost)
## Passenger should set RACK_ENV for Sinatra
require 'test'
set :environment, :development
run Sinatra::Application
Editar Mais tarde: Isto é tudo muito bem, mas ainda há a questão de que passageiros não consegue encontrar minhas jóias quando o trabalho inicialmente inicia .
Meu config.ru é apenas simples como:
require 'rubygems'
require 'vendor/sinatra/lib/sinatra.rb'
require 'app.rb'
e cabeça app.rb:
require 'yaml'
require 'haml'
require 'ostruct'
require 'date'
require 'pp'
module FlytoFB
log = File.new("sinatra.log", "a")
STDOUT.reopen(log)
STDERR.reopen(log)
configure do
enable :logging, :dump_errors
set :app_file, __FILE__
set :reload, true
set :root, File.dirname(__FILE__)
set :environment, :production
set :env, :production
set :run, false
set :raise_errors, true
set :public, 'public'
error do
e = request.env['sinatra.error']
puts e.to_s
puts e.backtrace.join("\n")
"Application Error!"
end
not_found do
"Page not found!"
end