私は、Sinatra、Ruby、rack、haml、pony、SendGridを使ってアプリケーションを構築しようとしています。このアプリは、フォーム上に投稿された解説付きのメールを送信するブログの変形です。私のローカルサーバーでは、フォームは、私は次のエラーを取得する際に提出:Rack/Sinatra LoadError:そのようなファイルを読み込むことができません
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'
Herokuの上で実行すると、内部サーバーエラーに提出結果を形成します。 「そのようなファイルを読み込むことができません」というエラーは、ファイルが宝石のパス上にないことを示唆しているが、私が正しく理解していれば、OSは同意しない:ここで
➜ 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]
はポニーが必要とされているコード(noobs.rb)です。
require 'rubygems'
require 'sinatra'
require 'haml'
require "sinatra/reloader" if development?
# ...
post '/' do
require 'pony'
Pony.mail(:from => params[:name] + "<" + params[:contact] + ">",
ポニーを動作させるには何が必要ですか?
好奇心を要して、フォームが投稿されたときにのみポニーが必要なのはなぜですか?アプリの起動時に一度だけ必要とするのはなぜですか? (私はBundlerやHerokuを使用していないので、宝石のインストールやライブラリのロードに間違いがないかどうかアドバイスすることはできません) – Phrogz
また、Ruby 1.9では 'require 'ルビーの宝石類;それはインストールの一部です。最もシンプルなアプリで '' sinatra''をrequireする前に '' pony''を入れてみましたか? – Phrogz
ありがとう、Phrogz。私はもともと、他の要求と一緒にトップにポニーを要求し、私が見た例と一致するようにそれを移動しました。それを後で要求すると、投稿が呼び出されるまでアプリが実行されます。 require 'ruby gems'はロードパスに手動で宝石を追加しようとすると残っていましたが、これは正しく実行されなかったかもしれません。私はそれを削除しておくべきだった。私はポニーで始まるより簡単なアプリをやろうとしていて、それはまだ爆破されていないので、おそらくそれが実を結ぶだろう。私は結果を投稿します。 –