2010-04-10 89 views
5

我在environment.rb文件中定義了以下的寶石:開箱寶石[Rails的2.3.5]

config.gem "authlogic" 
    config.gem "paperclip" 
    config.gem "pauldix-feedzirra", :lib => "feedzirra", :source => "http://gems.github.com" 
    config.gem 'whenever', :lib => false, :source => 'http://gemcutter.org/' 

我讓他們在我的本地計算機上安裝,一切運作良好。 由於我在共享服務器(DreamHost)上工作,我需要解壓這些寶石才能使它們工作(不能像我在自己的計算機上那樣安裝它們來讓它們工作)。

上傳前,我跑我的本地機器上執行以下操作:

rake gems:unpack 

此創建以下文件夾中/vender/gems

authlogic-2.1.3, paperclip-2.3.1.1, pauldix-feedzirra-0.0.18, whenever-0.4.1 

所以看起來他們都在那裏。

當我在服務器上運行rake db:migrate,不過,我得到這些下列錯誤:

Missing these required gems: 
    pauldix-feedzirra 

出於某種原因,feedzirra解壓未檢測寶石。任何人都可以提供一個線索,爲什麼會發生這種情況並提供一個潛在的解決方案?

謝謝!


編輯:謝謝,但擺在environment.rb中不起作用的代碼,捆綁也不會在我的服務器上正確安裝。還有其他建議嗎?

回答

2

這不完全是一個答案,但因爲我永遠無法得到config.gem正常工作,我建議使用Bundler每當我可以。它正常工作,它處理好寶石之間的相互依賴關係。它也取代了我所瞭解的Rails 3中的config.gem。

0

嘗試Following.put這段代碼envoirment.rb

config.load_paths += Dir["#{RAILS_ROOT}/vendor/gems/**"].map do |dir| 
    File.directory?(lib = "#{dir}/lib") ? lib : dir 
    end 
+0

謝謝,但這似乎不工作... – 2010-04-13 18:14:51

0

不知道我的提示是否有用,因爲feedzirra是編譯擴展名(針對CURL我認爲)。更好的解決方案是在您的服務器上正常安裝feedzirra gem(它會自行編譯)。


您還沒有安裝(解壓縮)feedzirra寶石,但pauldix-feedzirra。可能你需要feedzirra解壓。

嘗試添加

config.gem feedzirra 

到environment.rb中和本地運行

rake gems:install 
rake gems:unpack 

它看起來像feedzirra解壓後的寶石在/vendor/plugins失蹤。看看feedzirra是否會在那些命令後被複制...

1

我注意到feedzirra的兩件事:首先,它依賴於其他3個gem,並且至少有一個構建本地擴展。我打算稱之爲「feedzirra」 - 我不是github認真考慮自動包裝失敗的粉絲。

如果只有前者,那麼rake gems:unpack:依賴關係就可以做到這一點。

但是,至少抑制(feedzirra依賴於)正在構建擴展,並且不能簡單地解壓。你可以讓Dreamhost安裝它們(祝你好運),或者將它們安裝到用戶的本地gem目錄中。

爲了做到這一點,你需要更新你的.gemrc,並確保它包含這樣一行: :user_install:真

然後耙寶石:安裝

除非你的部署環境中贏得讓你建立可執行文件,在這種情況下,你需要爲限制較少的軟件包提供支持 - 我知道Dreamhost確實提供了允許擴展寶石的軟件包。

(還有一個單獨的libcurl正在部署......)