使用乘客运行Rails 3.0和Rails 3.1应用程序(使用不同的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
但是,不同的gem集中已有三条线:
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和bundle install。 这意味着您的基础ruby-1.9.2-p180将具有两个应用程序的gem,并且bundler应该处理限制应用程序可用的gem。
最终结果:
- ruby-1.9.2-p180有两个应用程序的gem
- ruby-1.9.2-p180@rails-3.0为您的3.0应用程序提供了gem
- ruby-1.9.2-p180@rails-3.1为您的3.1应用程序提供了gem
- 乘客正在使用ruby-1.9.2-p180
- bundler仍应限制每个应用程序可用的gem
- 两个应用程序应该工作
- 连接到S3时,获取“SSL_connect返回= 1 errno = 0状态=错误:证书validation失败”
- 有人可以为pluginaweek – statemachine提供一个活跃的记录示例吗?