Die Bereitstellung Sinatra-app auf Dreamhost/Beifahrer mit benutzerdefinierten Edelsteine
Frage
Ich habe eine Sinatra-app, die ich versuche zu laufen, auf Dreamhost verwenden von pony, um E-Mail senden.Um die Anwendung und läuft ganz am Anfang (vor dem hinzufügen von pony), musste ich gem unpack rack
und gem unpack sinatra
in der Hersteller-Verzeichnis, also das war meine 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
Habe ich bereits getan gem install pony
und gem unpack pony
(vendor/).Danach habe ich versucht, indem require 'vendor/sinatra/lib/pony'
zu config.ru nur haben Fluggast-Klagen über pony Abhängigkeiten (mime-Typen, tmail) nicht gefunden!
Es hat ein besserer Weg, um andere Edelsteine, und Ton diesen langen, hässlich, überflüssig requires
.Irgendwelche Gedanken?
Lösung
Ich würde empfehlen, erstellen Sie Ihren eigenen Edelstein Pfad "irgendwo" hinzufügen, die in Ihrem config.ru
wie:
ENV['GEM_PATH'] = xxx
Gem.clear_paths
dann installieren Sie Ihre Edelsteine in diesem
Andere Tipps
Installieren Sie Ruby gems auf dreamhost
http://c.kat.pe/post/installing-ruby-gems-on-dreamhost/
Ändern config.ru (funktioniert für 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
Hoffe es hilft jemandem.
Ich bin mit pony und viele andere Edelsteine für mein Sinatra.Es sollte gut funktionieren, auch für Sie.Es ist nur diese zwei Zeilen (GEM_HOME und GEM_PATH) Sie haben zu hinzufügen auf Ihre config.
Es hat mich Alters zu finden, die Sie einfach verwenden Sie "gem install sinatra" - und Edelstein-Figur wird aus (weil die system-Verzeichnisse sind schreibgeschützt), die Sie benötigen, um eine lokale gem install directory.Jetzt scheint es zu sein, keine Notwendigkeit, irgendwelche speziellen Umgebung.Sie zahlen, um in $HOME/.gem als lokales Juwel Weg und alles funktioniert einfach.Keine Notwendigkeit require 'vendor/stuff' at all.Ich fand, dass ich hatte, um in $HOME/.gem/ruby/1.8/bin meinen Weg zum ausführen von Binärdateien installiert werden, indem die Edelsteine.
Hier ist meine config.ru (für Dreamhost)
## Passenger should set RACK_ENV for Sinatra
require 'test'
set :environment, :development
run Sinatra::Application
Später Bearbeiten:Das ist alles schön und gut, aber es bleibt das Problem, dass Passagier kann nicht finden, meine Edelsteine, wenn der job startet zunächst bis.
Meine config.ru ist es einfach so:
require 'rubygems'
require 'vendor/sinatra/lib/sinatra.rb'
require 'app.rb'
und app.rb Kopf:
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