3

我剛剛遵循these directions來安裝新的rvm gemset並在本地機器上安裝rails-3.1.0.rc2。起初,我得到一個Passenger錯誤,指出rake-0.9.2 gem無法加載,但我發現this提醒我運行「$ passenger-install-apache2-module」。安裝它精細促使我下面添加到我的Apache的配置文件(/etc/apache2/httpd.conf):使用passenger運行Rails 3.0和Rails 3.1應用程序(使用不同的rvm gemset)

LoadModule passenger_module /Users/robs/.rvm/gems/[email protected]/gems/passenger-3.0.7/ext/apache2/mod_passenger.so 
PassengerRoot /Users/robs/.rvm/gems/[email protected]/gems/passenger-3.0.7 
PassengerRuby /Users/robs/.rvm/wrappers/[email protected]/ruby 

不過,目前已經有來自不同的寶石三線有:

LoadModule passenger_module /Users/robs/.rvm/gems/[email protected]/gems/passenger-3.0.7/ext/apache2/mod_passenger.so 
PassengerRoot /Users/robs/.rvm/gems/[email protected]/gems/passenger-3.0.7 
PassengerRuby /Users/robs/.rvm/wrappers/[email protected]/ruby 

如果我把兩行代碼都留在未註釋的位置(@ rails-3.1 gemset是最後一行),並重新啓動Apache,那麼我的Rails 3.0應用程序將無法啓動。我發現自己必須註釋掉rails 3.1 gemset行,重啓Apache,然後運行「$ rvm use ruby​​[email protected]」。如果我想運行Rails 3.1應用程序,我必須做相反的事情。

如果沒有這些額外的步驟,是否有辦法讓兩者都能同時運行?

回答

2

This article對您有用。

我用它作爲例子,用nginx設置我自己的開發環境。

+0

完美工作。我在我的本地Mac OS X 10.6.7機器上。謝謝! – robertwbradford 2011-06-10 15:32:06

0

您可以告訴Passenger在沒有gemset的情況下使用ruby 1.9.2,然後在每個應用程序中運行rvm使用ruby-1.9.2-p180和bundle install。這意味着您的基本ruby-1.9.2-p180將爲這兩個應用程序提供寶石,並且bundler應該處理限制您的應用程序可用的寶石。

最終結果:

  1. 紅寶石1.9.2-P180具有這兩個應用
  2. ruby​​[email protected]有寶石爲您的應用程序3.0
  3. ruby​​-寶石[email protected]對您的應用程序3.1寶石
  4. 乘客使用紅寶石1.9.2-P180
  5. 捆綁還是應該限制提供的寶石每個應用
  6. 都應該應用工作
+0

感謝您的回覆。我最終還需要添加.rvmrc和config/setup_load_paths.rb文件,如@ daekrist答案的鏈接文章中所述。 – robertwbradford 2011-06-10 15:34:20

相關問題