La implementación de Sinatra aplicación en Dreamhost / pasajero con gemas personalizados
Pregunta
Tengo una aplicación Sinatra que yo estoy tratando de ejecutar en Dreamhost que hace uso de pony para enviar correo electrónico. Con el fin de conseguir la aplicación en funcionamiento desde el principio (antes de la adición de caballo), que tenía que gem unpack rack
y gem unpack sinatra
en el directorio vendor /, así que esta era mi 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
Ya he hecho gem install pony
y gem unpack pony
(en vendedor /). Posteriormente, He intentado añadir a require 'vendor/sinatra/lib/pony'
config.ru sólo para que los pasajeros se quejan de dependencias del pony (tipos MIME, tmail) no se encuentran ya sea!
tiene que haber una manera mejor utilizar otras gemas y bajar el tono de los requires
larga, fea, redundante. ¿Alguna idea?
Solución
Me gustaría recomendar la creación de su propio camino joya "en algún lugar" a continuación, añadir que en su config.ru
como:
ENV['GEM_PATH'] = xxx
Gem.clear_paths
a continuación, instalar gemas en que
Otros consejos
Instalar gemas de rubíes en la dreamhost
http://c.kat.pe/post/ Instalación-ruby-gemas-on-dreamhost /
Cambiar config.ru (obras para Sinatra 1.0)
requerir '' rubygems
require 'vendedor / 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 ayuda a alguien.
Estoy usando caballo y muchas otras gemas para mi Sinatra. Se debe trabajar bien para usted también. Es sólo esas dos líneas (GEM_HOME y GEM_PATH) hay que añadir en su configuración.
Me tomó años para encontrar que sólo tiene que utilizar "joya instalar Sinatra" y joya darán cuenta (ya que los directorios del sistema son de sólo lectura) que tendrá que utilizar una joya local directorio de instalación. A partir de ahora, no parece haber ninguna necesidad de fijar cualquier entorno especial. Se da cuenta de que usar $ HOME / .gem como el camino joya local y todo funciona. No hay necesidad de requerir 'vendedor / cosas' en absoluto. Lo que encontrar he tenido que añadir $ HOME / .gem / Ruby / 1.8 / bin a mi camino con el fin de ejecutar binarios instalados por las gemas.
Aquí está mi config.ru (por Dreamhost)
## Passenger should set RACK_ENV for Sinatra
require 'test'
set :environment, :development
run Sinatra::Application
Más tarde editar: Esto es todo muy bien, pero sigue siendo el tema que Pasajero no puede encontrar mis joyas cuando el trabajo comienza inicialmente .
Mi config.ru es sólo simple como:
require 'rubygems'
require 'vendor/sinatra/lib/sinatra.rb'
require 'app.rb'
y la cabeza 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