簡體   English   中英

Rails 3:Passenger無法找到bundler安裝的git gem

[英]Rails 3: Passenger can't find git gems installed by bundler

Rails 3.0.0,乘客2.2.15:

  • 創建一個新的Rails項目
  • 添加gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3' ,: gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3' rails3 gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3'到您的Gemfile
  • bundle install
  • 一切正常,從rails/script server和訪問開始也可以
  • 但是,在使用Passenger訪問時,它說:

未檢出git://github.com/lmumar/paperclip.git(在rails3)。 請運行bundle install (Bundler :: GitError)

我在.htaccess和config / * .rb中的各個地方嘗試過bundler pack (沒有幫助)並將BUNDER_HOME設置為〜/ .bundler(Paperclip git通過bundler install ),但這不成功也是。

〜/ .bundler由與Rails項目相同的用戶擁有(Passenger在此用戶下運行),因此它不能是權限問題。 sudo是由bundle install安裝並調用的。

任何提示?

我以前有這個問題,解決使用

bundle --deployment

這將在vendor / bundle中安裝gem

解決方案(花了我幾個小時):

確保RAILS_ROOT/.bundle/config (SetEnv等對我不起作用)包含:

--- 
BUNDLE_PATH: /home/xxxxx/.bundler

注意BUNDLE_PATH,而不是BUNDLER_PATH! 還有一個DISABLED_SHARED_GEMS = 1條目,我刪除了它。

然后,即使從Passenger加載,bundler也會識別正確的路徑。 沒有乘客,它總是工作(並使用/home/xxxxx/.bundler,如問題中所述)

您可以使用bundle install --path vendor/bundle在本地安裝gem,而不是在系統gem中安裝。

但是,如果您想繼續使用系統寶石,那么Apache配置中只有一行可以告訴Passenger在哪里可以找到您的系統寶石:

SetEnv GEM_HOME /Users/bob/.bundle

使用GEM_HOME設置的Using Passenger時,我的博客上有一篇更精細的文章

我在編寫Sinatra應用程序時遇到了這個問題。 為了解決這個問題,我將這一行添加到了config.ru中

require 'bundler/setup'

我有同樣的問題,這是由於RVM的權利問題。

運行Web服務器的用戶無法檢查GIT gem是否可用。 作為使用Web用戶運行的“Passenger”,它無法進行此檢查。

我找到的解決方案是將網絡用戶添加到rvm組:

usermod -a -G rvm apache

我希望這將有助於其他一些不希望將GEM部署到“供應商/捆綁”中的人。

我安裝了乘客gem及其apache模塊作為sudo用戶,這就是我的問題。

我最初使用sudo的原因是我從railscasts的第122集復制了代碼。在沒有sodu訪問的情況下安裝它解決了這個問題。 由於Ruby是使用rvm安裝的,而我的系統上沒有sudo訪問權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM