2012-05-21 46 views
1

我有一個引擎利用了savon寶石。當我在/test發動機內運行虛擬應用程序,這一切就很好了,但是當我嘗試安裝並運行它作爲我的應用程序內部的引擎,我得到的錯誤:無法加載引擎中的寶石

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

我用通過將require "savon"添加到模型的頂部,soap_model.rb來使用它。根據this的帖子,我不應該把它添加到模型,但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

該gem包含在引擎Gemfile中,但沒有作爲gemspec中的依賴項添加,因此在主應用中運行bundle install時未包含該gem。

添加這enginename.gemspec

s.add_dependency "savon" 

了一切工作。

它在虛擬應用程序中工作的原因是它與引擎共享Gemfile。

0

我不知道爲什麼創業板表現得那麼奇怪,但你可以嘗試代碼:

你必須先需要然後包括它。

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

include EngineName::SOAP::Savon 

希望它有幫助。

+0

那麼,問題是它永遠不會到達'include'語句,因爲它在'require'處崩潰。我仍然'沒有這樣的文件加載'。奇怪的是,它在虛擬應用程序中運行時有效,但在安裝時無法運行。 – jurgemaister