2013-01-02 60 views
1

以下代碼位於我的Rails應用的根文件夾中,並守護進程/運行myserver.rb'require'不能與rvm一起使用

# myserver_control.rb 

require 'rubygems' 
require 'daemons' # causes 'no such file to load -- daemons' error since gem reinstall with rvm 

@options = { 
    # options defined 
} 

Daemons.run('myserver.rb', @options) 

它工作得很好,直到我安裝rvm,現在它似乎無法找到守護進程gem。我有一種感覺,也許上面正在尋找系統範圍文件夾中的守護進程gem?而不是能夠使用rvm安裝的守護進程gem?如何在可以找到它的系統級別安裝守護進程gem?或者我該怎麼做才能找到rvm安裝的gem?

目前我甚至沒有'系統'寶石套裝。如何在安裝rvm之後在系統級安裝gem?

+0

你如何執行'myserver.rb'? –

+0

我從命令行運行'sudo ruby​​ myserver_control.rb start'。這是一個由守護進程ruby gem提供的命令。 – pitachip

+2

不在sudo中運行 – Egryan

回答

1

如果希望使用該系統的紅寶石和寶石,你可以鍵入

rvm use system 

這將允許使用系統安裝紅寶石和寶石,但我覺得還挺這違背了使用RVM我會的目的而是在RVM中安裝一個默認的ruby,並在其中安裝任何gem。要設置默認的Ruby你在安裝後,根據評論你的問題在於運行sudo的鍵入此

rvm --default use 1.9.2 

編輯

,這將創建RVM的一個新的子shell和不同的實例

+0

我的rails應用程序一般正在使用rvm安裝的寶石。但上面的守護進程控制代碼似乎正在顯示自己的行爲 - 尋找系統寶石,而不是使用rvm已安裝的gem。所以我試圖弄清楚如何做(1)找到rvm已安裝的守護進程gem - 它找不到或者(2)在系統級別安裝守護進程gem--考慮到我已經安裝了rvm。對這兩種解決方案的任何建議都會很好。 – pitachip

+0

好吧,如果你使用rvm使用系統,它會恢復到系統安裝的ruby和gems,然後你可以安裝守護進程gem。快速的問題是你在安裝和設置rvm後重新安裝gem。即在您的gemfile中運行dameons gem並運行軟件包更新 – Egryan

+0

是的。我在我的Gemfile中確實擁有所有必需的寶石,並運行了軟件包更新,所有寶石都安裝在預期的文件夾中。這只是我在這裏的ruby腳本,似乎在我的寶石尋找錯誤的地方(系統寶石文件夾)。 – pitachip

0

RVM使用gemsets的概念,gemset是您可以使用的唯一寶石組,通常專用於ruby版本(儘管您可以使它們專用於應用程序或全局)。

更改ruby版本時,RVM將更改您的GEM_HOME,這會告訴rugege您的gem安裝位置。所以當你安裝RVM時,你創建了一個新的空白gemset,RVM告訴rubygems使用它。

這是因爲寶石並不總是在rubygems之間交叉兼容。

但是,如果您只是編寫rails應用程序,則應該忽略上述內容並使用bundler。放置'gem'守護進程''我是您的Gemfile並從您的應用程序根目錄運行軟件包更新。

Bundle可幫助您在每個應用程序的基礎上維護寶石,這意味着如果您將寶石升級到其他地方,您的應用程序不會中斷。使用它並瞭解其工作原理是最佳實踐。祝你好運。

+0

是的,這就是我已經安裝了所有東西,我的導軌應用程序本身可以找到所有的寶石。這是服務器腳本,爲我的應用程序做了一些小工作(如上面的那樣),似乎無法找到我的應用程序的寶石。我能否以某種方式提供rvm已安裝gem的完整路徑? – pitachip

相關問題