我正在升級我的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 ...
- 默認情況下,Rails 2.3只從Gemset加載寶石。我不得不添加一些代碼來告訴我的應用程序加載捆綁的Gems,正如解釋here。
當我上週設置了一些Rails服務器(CentOS和Ubuntu)時,我發現如果我嘗試將RVM與Passenger一起使用,會導致嚴重問題。這可能是巧合,但我建議在沒有RVM的情況下嘗試設置你的東西,如果你只是在生產模式下設置服務器(因爲無論如何你都不需要在生產服務器上真正需要多於一個版本的Rails )。其次,我不完全確定Ruby 1.9.2適用於Rails 2.x,雖然我可能是錯的。我會建議只使用Ruby 1.8.7 - 沒有真正的理由使用1.9.2,否? – vandrop
我開始使用Ruby 1.9準備遷移到Rails 3,並且本地一切正常。但即使沒有RVM,因爲捆綁的寶石都在共享/捆綁文件夾中,我不認爲Ruby和乘客會找到它們,是不是?所以現在我想,我只需讓RVM知道寶石的位置,或者給出一個選項來「捆綁安裝」在特定的位置,但我不知道該位置應該是什麼。任何想法? – alex
RVM將您的寶石置於我相信的奇怪位置。你可以檢查你的環境變量(命令行printenv)並將路徑導出到你的寶石所在的位置,但是如果你只是卸載了RVM,Ruby寶石等,並且安裝了RoR,那麼這樣做不會那麼簡單辦法?我保證它不需要那麼長時間,值得一試:) – vandrop