7

Sinatra、Ruby、rack、haml、pony、SendGridを使用して、HerokuにデプロイするためのgitとRVMを使用してアプリを構築しようとしています。このアプリはブログのバリエーションであり、フォームにコメントを送信してメールを送信する必要があります。ローカルサーバーで、フォームを送信すると、次のエラーが発生します。

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で実行すると、フォームの送信により内部サーバーエラーが発生します。「そのようなファイルを読み込めません」というエラーは、ファイルがgemパス上にないことを示していますが、私が正しく理解している場合、OSは同意しません。

➜  noobs git:(master) ✗ bundle show pony
/Users/Kevin/.rvm/gems/ruby-1.9.3-p194@noobs/gems/pony-1.4

➜  noobs git:(master) echo $GEM_PATH
/Users/Kevin/.rvm/gems/ruby-1.9.3-p194@noobs:/Users/Kevin/.rvm/gems/ruby-1.9.3-p194@global

ポニーが必要なコード(noobs.rb)は次のとおりです。

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

# ...

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

ポニーを機能させるには何をする必要がありますか?

4

2 に答える 2

14
require "bundler/setup"

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

SinatraでBundlerを使用しているため、バンドルされたgemが機能するにはBundlerが必要です。あなたはおそらくあなたの宝石をBundlerとあなたの宝石セットの間で分割しています。GemsetにSinatraとHamlがあり、GemfileにPonyがある場合は、LoadErrorが表示されます。

于 2012-06-20T18:52:15.470 に答える
0

ジェムの名前(私の場合はポニー)をGemfileに書き留めると、動作し始めます。Jemfileを開くだけで、新しい行に jem "pony"という単語を書き留めます。次のpaste2.org/6hVxHXKHが表示されます。

于 2019-01-15T14:59:32.400 に答える