2012-06-19 23 views
5

私は、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] + ">", 

ポニーを動作させるには何が必要ですか?

+0

好奇心を要して、フォームが投稿されたときにのみポニーが必要なのはなぜですか?アプリの起動時に一度だけ必要とするのはなぜですか? (私はBundlerやHerokuを使用していないので、宝石のインストールやライブラリのロードに間違いがないかどうかアドバイスすることはできません) – Phrogz

+2

また、Ruby 1.9では 'require 'ルビーの宝石類;それはインストールの一部です。最もシンプルなアプリで '' sinatra''をrequireする前に '' pony''を入れてみましたか? – Phrogz

+0

ありがとう、Phrogz。私はもともと、他の要求と一緒にトップにポニーを要求し、私が見た例と一致するようにそれを移動しました。それを後で要求すると、投稿が呼び出されるまでアプリが実行されます。 require 'ruby gems'はロードパスに手動で宝石を追加しようとすると残っていましたが、これは正しく実行されなかったかもしれません。私はそれを削除しておくべきだった。私はポニーで始まるより簡単なアプリをやろうとしていて、それはまだ爆破されていないので、おそらくそれが実を結ぶだろう。私は結果を投稿します。 –

答えて

11
require "bundler/setup" 

おそらくエラーを修正します。

SinatraでBundlerを使用しているため、バンドルされた宝石を使用するにはBundlerが必要です。あなたはおそらくあなたの宝石をBundlerとあなたの宝石の間に分けたでしょう。 GemfileにSinatraとHamlがありますが、PonyにはLoadErrorがあります。

+0

ありがとう、keithcelt! 'bundler/setup' 'がそれを修正しました。私は、少なくとも今のところ、落書きアプリでの作業を中止しました。以前と同じように私の宝石を分割する何かをするまでは、それがうまくいくと思います。 –

+0

ようこそ。あなたのために働いた場合は、この回答を受け入れてください。 – keithcelt

関連する問題