簡體   English   中英

使用乘客運行 Rails 3.0 和 Rails 3.1 應用程序(使用不同的 rvm gemsets)

[英]Using passenger to run both Rails 3.0 and Rails 3.1 app (using different rvm gemsets)

我只是按照這些說明在本地計算機上安裝新的 rvm gemset 和安裝 rails-3.1.0.rc2。 起初我收到一個乘客錯誤,說無法加載 rake-0.9.2 gem,但我發現提醒我運行“$passenger-install-apache2-module”。 它安裝得很好,提示我將以下內容添加到我的 Apache 配置文件 (/etc/apache2/httpd.conf) 中:

LoadModule passenger_module /Users/robs/.rvm/gems/ruby-1.9.2-p180@rails-3.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /Users/robs/.rvm/gems/ruby-1.9.2-p180@rails-3.1/gems/passenger-3.0.7
PassengerRuby /Users/robs/.rvm/wrappers/ruby-1.9.2-p180@rails-3.1/ruby

但是,已經有來自不同 gemset 的三行:

LoadModule passenger_module /Users/robs/.rvm/gems/ruby-1.9.2-p180@rails-3.0/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /Users/robs/.rvm/gems/ruby-1.9.2-p180@rails-3.0/gems/passenger-3.0.7
PassengerRuby /Users/robs/.rvm/wrappers/ruby-1.9.2-p180@rails-3.0/ruby

如果我不加注釋(@rails-3.1 gemset 是最后一個),然后重新啟動 Apache,我的 Rails 3.0 應用程序將無法啟動。 我發現自己必須注釋掉 rails 3.1 gemset 行,重新啟動 Apache,然后運行“$ rvm use ruby-1.9.2-p180@rails.3.0”。 如果我想運行 Rails 3.1 應用程序,我必須做相反的事情。

有沒有辦法讓兩者都能夠在沒有這些額外步驟的情況下同時運行?

這篇文章可能對你有用。

我以它為例,用 nginx 設置我自己的開發環境。

您可以告訴Passenger 在沒有gemset 的情況下使用ruby 1.9.2,然后在您的每個應用程序中運行rvm 使用ruby-1.9.2-p180 並進行捆綁安裝。 這意味着您的基礎 ruby-1.9.2-p180 將擁有兩個應用程序的 gem,並且 bundler 應該處理限制您的應用程序可用的 gem。

最終結果:

  1. ruby-1.9.2-p180 對這兩個應用程序都有寶石
  2. ruby-1.9.2-p180@rails-3.0 為您的 3.0 應用程序提供了寶石
  3. ruby-1.9.2-p180@rails-3.1 為您的 3.1 應用程序提供了寶石
  4. 乘客正在使用 ruby-1.9.2-p180
  5. bundler 仍應限制每個應用程序可用的 gem
  6. 兩個應用程序都應該工作

暫無
暫無

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

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