Phusion Passenger Error:您已激活机架1.2.1,但您的Gemfile需要机架1.2.2

are*_*555 22 ruby rubygems ruby-on-rails passenger dreamhost

我正在尝试在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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Sur*_*rya 9

尝试在Gemfile中编辑后重新启动服务器并将其放入: gem 'rack', '1.2.1'


t_i*_*chy 8

这适用于Rails 3.0.x和Passenger 3.0.15

创建一个文件:

config/setup_load_paths.rb
Run Code Online (Sandbox Code Playgroud)

内容:

require 'rubygems'
require 'bundler/setup'
Run Code Online (Sandbox Code Playgroud)

然后Passenger将加载Gemfile.lock中指定的rack gem


Tod*_*ski 5

经过长时间的不活动,我在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/
Run Code Online (Sandbox Code Playgroud)

我猜测发生的事情是,在乘客"醒来"之后,由于某种原因,它首先(或者可能)看到系统级别的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

它似乎有效.希望这对其他人撕裂他们的头发很有帮助.


小智 5

我有同样的问题:"你已经激活了机架1.2.1,但你的Gemfile需要机架1.2.3"

  1. 添加到Gemfile:gem' rack','1.2.1'
  2. 捆绑更新
  3. 卸载机架版本> 1.2.1

    [wasp] $ gem list | grep rack

    机架(1.2.1,1.1.0,1.0.1,1.0.0)

  4. touch tmp/restart.txt

  5. :)开心