Phusion Passenger Error:您已激活机架1.2.1,但您的Gemfile需要机架1.2.2
我正在尝试在Dreamhost共享服务器上运行Ruby on Rails应用程序。 到目前为止一切都很好,除了一个我无法解开的奇怪的错误。
有时当我访问网络应用程序时,我收到一个Phusion Passenger错误说,
您已经激活了机架1.2.1,但您的Gemfile需要机架1.2.2。 考虑使用bundle exec。
当我只刷新页面时,它似乎工作,但没有更多的Phusion Passenger错误消息。
在其他堆栈溢出线程和类似的Dreamhost wiki之后 ,我将以下内容添加到config/environment.rb
文件的顶部:
if ENV['RAILS_ENV'] == 'production' # don't bother on dev ENV['GEM_PATH'] = '/home/myusername/.gems' + ':/usr/lib/ruby/gems/1.8' end
尝试在Gemfile中编辑后重新启动服务器并将其放入: gem 'rack', '1.2.1'
这适用于Rails 3.0.x和Passenger 3.0.15
创建一个文件:
config/setup_load_paths.rb
内容:
require 'rubygems' require 'bundler/setup'
然后Passenger将加载Gemfile.lock中指定的rack gem
经过长时间的不活动,我在DreamHost VPS上收到了几个Sinatra应用程序的类似错误:
Phusion Passenger Error: You have activated rack 1.2.1, but your Gemfile requires rack 1.3.0.
就像@ aren55555描述的那样,如果你只是刷新页面,那么错误就会消失。 以下是我发现的有关服务器配置的内容:
[psXXXXX]$ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.3.6 - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux] - INSTALLATION DIRECTORY: /home/XXXXXXXXX/.gems/ - RUBY EXECUTABLE: /usr/bin/ruby1.8 - EXECUTABLE DIRECTORY: /home/XXXXXXXXX/.gems/bin - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /home/XXXXXXXXX/.gems/ <-- Rack 1.3.0 Gem was installed here - /usr/lib/ruby/gems/1.8 <-- Rack 1.2.1 Gem was installed here - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://rubygems.org/
我猜测发生了什么事,在乘客“醒来”之后,出于某种原因,它首先 (或者可能只 )看到系统级别的Gems,选择Rack 1.2.1作为最新版本。 我的短期hacky解决方案只是在那里安装Rack 1.3.0:
gem install rack -v 1.3.0 --install-dir /usr/lib/ruby/gems/1.8
它似乎有效。 希望这对其他人撕裂他们的头发很有帮助。
我有同样的问题:“你已经激活了机架1.2.1,但你的Gemfile需要机架1.2.3”
- 添加到Gemfile:gem’ rack’,’1.2.1′
- 捆绑更新
-
卸载机架版本> 1.2.1
[wasp] $ gem list | grep rack
机架(1.2.1,1.1.0,1.0.1,1.0.0)
-
touch tmp / restart.txt
- :)开心
我在Dreamhost上解决了这个问题:
从Gemfile中删除任何行:gem’ rack’,….
rm Gemfile.lock rm -rf .bundle rm -rf vendor/bundle
在本地安装/使用gems并使用以下命令重新生成文件’Gemfile.lock’:
bundle install
在vendor / bundle中安装gem
bundle install --deployment
重新开始:
touch tmp/restart.txt
我刚刚在Dreamhost上遇到了这个问题。 问题是Dreamhost服务器安装了机架1.2.1,并且您的Gemfile正在加载1.2.2。 我发现如果我只是安装机架:
gem install rack
然后将最新版本的机架(目前为1.2.2)安装到您的home gems文件夹(〜/ .gems)。 当乘客启动时,它将使用1.2.2。
我和Apache有类似的问题:“你已经激活了机架1.2.3,但你的Gemfile需要机架1.2.2。考虑使用bundle exec。”
问题是Passenger安装机架1.2.3和我的导轨APP机架1.2.2:
$ gem list |grep rack rack (1.2.2, 1.2.3)
尝试:
$ gem uninstall --version=1.2.3 rack
重启服务器并解决了
在最终放弃乘客之前,我与这个问题斗争了好几个小时。 任何新版本的Rails都将使用比Dreamhost的Passenger更新的Rack。
但是,您不需要Passenger来启动应用程序。 Dreamhost提供了一些关于如何使用FastCGI启动应用程序的非常简单(和工作)的说明,并且您不必在此过程中损坏您的Gemfile:
这可能值得一试。 有人试图让调试器与Passenger&Rails 3一起工作 – http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger
- 在Ruby Net :: IMAP中选择邮箱“已发送邮件”或“所有邮件”
- rails 3.1 ActionController :: RoutingError(没有路由匹配“/assets/rails.png”):