2011-08-17 50 views
1

我正在升級我的Rails應用程序,最初在ruby 1.8.7和rails 2.3.5到ruby 1.9.2和rails 2.3.12,並嘗試使用RVM和bundler,期待遷移會更容易。在我的本地機器上一切正常,但我很難使用RVM並在生產環境中部署我的包。RVM和捆綁在生產

首先,我不確定RVM是否正確加載我的默認環境。我用root用戶進行了多用戶安裝。然後我輸入:

RVM --default使用1.9.2

並補充說:

[[ -s "/usr/local/rvm/scripts/rvm" ]] && ."/usr/local/rvm/scripts/rvm" 

到我的根用戶在〜/ .bash_profile,但我當打開一個新的shell,輸入「which ruby​​」,它鏈接到「/ usr/local/rvm/bin/ruby​​」。當我輸入「rvm default」,然後「哪個ruby」時,按照預期得到「/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby」。所以我不確定RVM是否已正確安裝和配置。

然後,我的包被安裝在(我相信)在:

「的/ home/web應用/網絡/共享/捆」

,當我鍵入「包列表「我可以看到我安裝的寶石(包括我的導軌2.3.12)。但是當我做「寶石列表」時,我只看到:

*** LOCAL GEMS *** 

bundler (1.0.18) 
daemon_controller (0.2.6) 
fastthread (1.0.7) 
passenger (3.0.8) 
rack (1.3.2) 
rake (0.9.2 ruby) 

我的包中的寶石不屬於列表的一部分。所以現在,在我的現場(嘆氣),乘客找不到Rails 2.3.12(可從包中找到,而不是在本地寶石中)。不知道如何告訴乘客共享/捆綁文件夾中有一些寶石...

想得到一些幫助!

- EDITS:

1:我還沒有安裝乘客的正確途徑。我用

sudo的乘客安裝-Apache2的模塊

使用 「命令」 造成安裝到發生在我的系統紅寶石,而不是在一個RVM。一旦我運行命令沒有sudo,控制檯給了我正確的行插入到我的apache2.conf文件,我能夠啓動我的服務器。良好的第一步,但現在我無法開始思考 - 獅身人面像:它抱怨它找不到Rails 2.3.12 ...

  1. 默認情況下,Rails 2.3只從Gemset加載寶石。我不得不添加一些代碼來告訴我的應用程序加載捆綁的Gems,正如解釋here
+0

當我上週設置了一些Rails服務器(CentOS和Ubuntu)時,我發現如果我嘗試將RVM與Passenger一起使用,會導致嚴重問題。這可能是巧合,但我建議在沒有RVM的情況下嘗試設置你的東西,如果你只是在生產模式下設置服務器(因爲無論如何你都不需要在生產服務器上真正需要多於一個版本的Rails )。其次,我不完全確定Ruby 1.9.2適用於Rails 2.x,雖然我可能是錯的。我會建議只使用Ruby 1.8.7 - 沒有真正的理由使用1.9.2,否? – vandrop

+0

我開始使用Ruby 1.9準備遷移到Rails 3,並且本地一切正常。但即使沒有RVM,因爲捆綁的寶石都在共享/捆綁文件夾中,我不認爲Ruby和乘客會找到它們,是不是?所以現在我想,我只需讓RVM知道寶石的位置,或者給出一個選項來「捆綁安裝」在特定的位置,但我不知道該位置應該是什麼。任何想法? – alex

+0

RVM將您的寶石置於我相信的奇怪位置。你可以檢查你的環境變量(命令行printenv)並將路徑導出到你的寶石所在的位置,但是如果你只是卸載了RVM,Ruby寶石等,並且安裝了RoR,那麼這樣做不會那麼簡單辦法?我保證它不需要那麼長時間,值得一試:) – vandrop

回答

2

當使用RVM時,不使用sudo命令安裝Passenger。只要做到:

乘客安裝-Apache2的模塊

它會給你的配置線符合RVM環境(而不是你的系統Ruby的ENV)。