Sto provando a creare un'app utilizzando Sinatra, Ruby, rack, haml, pony e SendGrid, con git e RVM per l'implementazione su Heroku. L'app è una variante del blog che dovrebbe inviare un'e-mail con commenti inviati su un modulo. Sul mio server locale, quando il modulo invia ottengo il seguente errore:Rack/Sinatra LoadError: impossibile caricare tale file
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'
Quando eseguito su Heroku, risultati invio di moduli in un errore interno del server. L'errore 'non può caricare tale file' suggerisce che il file non si trova sul percorso gemma, ma se ho capito bene, il sistema operativo non è d'accordo:
➜ 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]
Ecco il codice in cui è richiesto di pony (noobs.rb):
require 'rubygems'
require 'sinatra'
require 'haml'
require "sinatra/reloader" if development?
# ...
post '/' do
require 'pony'
Pony.mail(:from => params[:name] + "<" + params[:contact] + ">",
Cosa devo fare per far funzionare Pony?
Per curiosità, perché dovresti richiedere Pony solo quando il modulo viene pubblicato? Perché non richiedere solo una volta all'avvio dell'app? (Non uso Bundler o Heroku, quindi non posso consigliarti su cosa può o non potrebbe essere sbagliato con l'installazione e/o caricamento della tua gemma.) – Phrogz
Inoltre, sotto Ruby 1.9 non dovresti aver bisogno di 'require' gemme di rubini''; fa parte dell'installazione. Hai provato a mettere solo "require" pony "prima di" richiedere "sinatra" nella più semplice app possibile? – Phrogz
Grazie, Phrogz. Originariamente avevo bisogno del pony in cima con l'altro e lo spostavo per abbinarlo a un esempio che avevo visto. Richiederlo in un secondo momento consente all'app di funzionare finché non viene chiamato il post. La richiesta di 'gemme di rubino' era un residuo dal tentativo di aggiungere manualmente la gemma al percorso di caricamento, cosa che forse non avevo fatto correttamente. Avrei dovuto cancellarlo Sto provando a fare un'app ancora più semplice a partire da Pony e non è ancora esplosa, quindi forse questo darà i suoi frutti. Posterò i risultati –