2012-06-19 15 views
5

Ich versuche eine App mit Sinatra, Ruby, Rack, Haml, Pony und SendGrid zu erstellen, mit Git und RVM für den Einsatz auf Heroku. Die App ist eine Blog-Variante, die eine E-Mail mit Kommentar auf einem Formular senden sollte. Auf meinem lokalen Server, wenn das Formular abschickt ich die folgende Fehlermeldung erhalten:Rack/Sinatra LoadError: kann keine solche Datei laden

LoadError at/
cannot load such file -- pony 
file: tools.rb location: require line: 314 
BACKTRACE 
(expand) 
/Users/Kevin/prog/ruby/Sinatra/Noobs/noobs.rb in block in <top (required)> 
    require 'pony' 

Wenn läuft auf Heroku, Form submittal Ergebnisse in einem internen Serverfehler. Die ‚kann nicht geladen werden solche Datei‘ schlägt vor, Fehler, dass die Datei nicht auf dem Edelstein-Pfad ist, aber wenn ich das richtig verstehe, das OS nicht einverstanden ist:

➜ noobs git:(master) ✗ bundle show pony 
/Users/Kevin/.rvm/gems/[email protected]/gems/pony-1.4 

➜ noobs git:(master) echo $GEM_PATH 
/Users/Kevin/.rvm/gems/[email protected]:/Users/Kevin/.rvm/gems/[email protected] 

Hier ist der Code, wo Pony erforderlich ist (noobs.rb):

require 'rubygems' 
require 'sinatra' 
require 'haml' 
require "sinatra/reloader" if development? 

# ... 

post '/' do 
    require 'pony' 
    Pony.mail(:from => params[:name] + "<" + params[:contact] + ">", 

Was muss ich tun, um Pony zur Arbeit zu bringen?

+0

Aus Neugier, warum würden Sie Pony nur benötigen, wenn das Formular veröffentlicht wird? Warum brauchen Sie es nicht einmal beim App-Start? (Ich benutze weder Bundler noch Heroku und kann Sie daher auch nicht darüber beraten, was mit Ihrer Gem-Installation und/oder -Bibliothek nicht in Ordnung ist.) – Phrogz

+2

Beachten Sie auch, dass Sie unter "Ruby 1.9" nicht "benötigen" müssen Rubin Edelsteine Es ist Teil der Installation. Haben Sie versucht, nur 'Require'-Pony'' vor' Require'-Sinatra' in der einfachsten App zu setzen? – Phrogz

+0

Danke, Phrogz. Ich benötigte ursprünglich Pony an der Spitze mit den anderen benötigt, und bewegte es, um ein Beispiel, das ich gesehen hatte, zu entsprechen. Wenn Sie es später anfordern, kann die App ausgeführt werden, bis der Post aufgerufen wird. Die Anforderung "Ruby Gems" war ein Überbleibsel von dem Versuch, den Edelstein manuell dem Ladepfad hinzuzufügen, was ich möglicherweise nicht richtig gemacht habe. Ich hätte es löschen sollen. Ich versuche eine noch einfachere App zu erstellen, die mit Pony beginnt und noch nicht explodiert ist, also wird das vielleicht Früchte tragen. Ich werde die Ergebnisse veröffentlichen. –

Antwort

11
require "bundler/setup" 

Wird wahrscheinlich Ihren Fehler beheben.

Da Sie Bundler mit Sinatra verwenden, müssen Sie benötigen, Bundler für die gebündelten Edelsteine ​​zu arbeiten. Wahrscheinlich haben Sie Ihre Edelsteine ​​zwischen Bundler und Ihrem Edelstein-Set aufgeteilt. Wenn Sie Sinatra und Haml in Ihrem Gemset aber Pony in Ihrer Gemfile haben, sehen Sie einen LoadError.

+0

Danke, keitcelt! 'require "Bundler/setup"' hat es behoben. Ich habe die Arbeit mit der abgespeckten App zumindest jetzt eingestellt. Ich nehme an, es hätte funktioniert, bis ich etwas gemacht habe, das meine Edelsteine ​​wie zuvor gespalten hat. –

+0

Gern geschehen. Bitte akzeptieren Sie diese Antwort, wenn es für Sie funktioniert hat. – keithcelt

Verwandte Themen