我有一个使用savon
宝石的引擎。当我在引擎内的/test
中运行虚拟应用程序时,一切正常,但是当我尝试在应用程序中安装并运行它作为引擎时,我收到错误:
`require': no such file to load -- savon (LoadError)
我过去通过将require "savon"
添加到模型的顶部soap_model.rb
来使用它来包含它。根据{{3}}帖子,我不应该将其添加到模型中,而是environment.rb
。启动服务器时似乎没有运行environment.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)
注意:我当然确保捆绑安装正确运行,然后重新启动服务器。
答案 0 :(得分:0)
我不知道为什么宝石表现得如此奇怪,但你可以试试这段代码:
您首先需要,然后包含。
# config/initializers/application.rb
require 'savon'
include EngineName::SOAP::Savon
希望它有所帮助。
答案 1 :(得分:0)
gem包含在引擎Gemfile中,但未作为依赖项添加到gemspec中,因此在主应用程序中运行bundle install
时未包含它。
将此添加到enginename.gemspec
s.add_dependency "savon"
让一切顺利。
它在虚拟应用程序中工作的原因是它与引擎共享Gemfile。