1

savon宝石を利用したエンジンを持っています。エンジン内でダミーアプリケーションを実行すると、/testすべて正常に機能しますが、アプリケーション内でエンジンとしてマウントして実行しようとすると、エラーが発生します。

`require': no such file to load -- savon (LoadError)

require "savon"以前は、それを使用するモデルの上部に追加して含めていましsoap_model.rbた。この投稿によると、モデルに追加するべきではありませんが、 environment.rbenvironment.rb新しいエラーが発生したため、サーバーの起動中に実行されたようには見えませんでした

uninitialized constant EngineName::SOAP::Savon

そこで、初期化子に追加しました。これにより、サーバーを。で起動しようとしたときに同じエラーが発生しますrails s

環境:

Mac OS 10.7.3
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]
Rails 3.1.4
savon (0.9.9)

注:もちろん、バンドルのインストールが正しく実行されることを確認し、サーバーを再起動しました。

4

2 に答える 2

0

Gemがなぜそんなに奇妙に振る舞うのかはわかりませんが、そのコードを試すことができます。

最初に要求し、次にそれを含める必要があります。

# config/initializers/application.rb
require 'savon'

include EngineName::SOAP::Savon

それが役に立てば幸い。

于 2012-05-21T17:04:39.660 に答える
0

gemはエンジンGemfileに含まれていましたが、gemspecの依存関係として追加されなかったためbundle install、メインアプリで実行されたときには含まれていませんでした。

これをに追加するenginename.gemspec

s.add_dependency "savon"

すべてが機能しました。

ダミーアプリで動作した理由は、Gemfileをエンジンと共有しているためです。

于 2012-05-23T10:09:28.120 に答える