Estoy tratando de crear una aplicación con Sinatra, Ruby, rack, haml, pony y SendGrid, con git y RVM para su implementación en Heroku. La aplicación es una variante de blog que debe enviar un correo electrónico con comentarios enviados en un formulario. En mi servidor local, cuando la forma se somete me sale el siguiente error:Rack/Sinatra LoadError: no se puede cargar dicho archivo
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'
Cuando se ejecuta en Heroku, el envío de formularios resultados en un error interno del servidor. El error 'no se puede cargar existe el fichero' indica que el archivo no está en la ruta de la gema, pero si he entendido bien, el sistema operativo no está de acuerdo:
➜ 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]
Este es el código que se requiere de caballo (noobs.rb):
require 'rubygems'
require 'sinatra'
require 'haml'
require "sinatra/reloader" if development?
# ...
post '/' do
require 'pony'
Pony.mail(:from => params[:name] + "<" + params[:contact] + ">",
¿Qué debo hacer para que pony funcione?
Por curiosidad, ¿por qué necesitarías Pony solo cuando se publique el formulario? ¿Por qué no solo lo requiere una vez al inicio de la aplicación? (No uso Bundler o Heroku, por lo que no puedo aconsejarle sobre lo que puede o no ser incorrecto con su instalación de gema y/o biblioteca de carga.) – Phrogz
Además, tenga en cuenta que bajo Ruby 1.9 no debería necesitar 'requerir ' rubíes gemas''; es parte de la instalación. ¿Has intentado poner 'require 'pony'' antes de' require' sinatra'' en la aplicación más simple posible? – Phrogz
Gracias, Phrogz. Originalmente requirí pony en la parte superior con el otro requiere, y lo moví para que coincida con un ejemplo que había visto. Requirirlo más tarde permite que la aplicación se ejecute hasta que se llame a la publicación. El requerimiento de "gemas de rubí" fue un remanente de tratar de agregar manualmente la gema a la ruta de carga, lo que puede que no haya hecho correctamente. Debería haberlo borrado Estoy tratando de hacer una aplicación aún más simple comenzando con Pony y aún no ha explotado, así que tal vez eso dará sus frutos. Publicaré los resultados. –