Phusion乘客错误:您已激活机架1.2.1,但您的Gemfile需要机架1.2.2
我试图在Dreamhost共享服务器上运行Ruby on Rails应用程序。目前为止,除了一个我无法解开的奇怪的错误之外,目前为止都是如此。Phusion乘客错误:您已激活机架1.2.1,但您的Gemfile需要机架1.2.2
有时,当我访问网络应用程序,我得到提出了一个的Phusion客运错误说,
You have already activated rack 1.2.1, but your Gemfile requires rack 1.2.2. Consider using bundle exec.
当我刚刚刷新它似乎工作的页面,虽然 - 没有更多的Phusion客运错误消息。
下列其他堆栈溢出线程和类似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'
当我在生产服务器上执行“捆绑安装”时,出现以下内容: '您请求:rack = 1.2.1该捆绑包目前机架锁定在1.2.2。尝试运行'包更新机架' 因此,我运行命令'包更新机架',我认为一切都成功更新。这个错误的问题是需要一些时间来重现(我知道它很奇怪) - 我会回过头来验证这是否是解决方案。 – aren55555 2011-04-26 01:52:37
删除'Femfile.lock',然后尝试'bundle install'。原因Gemfile.lock具有当前用于Rails应用程序的gem及其版本的信息,该信息由您的bundle命令首先生成。 – Surya 2011-04-26 04:09:54
'* Gemfile.lock' – Surya 2011-04-27 04:41:15
我刚在Dreamhost上遇到了这个问题。问题是Dreamhost服务器已安装机架1.2.1,并且您的Gemfile正在加载1.2.2。我发现,如果我只安装架:
gem install rack
然后架(1.2.2截至目前)的最新版本将得到安装到您的家庭的宝石文件夹(〜/ .gems)。当乘客启动时,它将使用1.2.2。
尽管@Surya有一个看似有效的解决方案,但我会试一试。 – aren55555 2011-04-27 04:32:11
我试过这个解决方案,但几天后仍然出现错误的机架错误。 – 2011-05-21 16:41:45
这可能值得检查一下。有人提出一种方式来获得与调试工作客运Rails的& 3 - http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger
长时间不活动后,我已经收到了类似的错误在DreamHost的VPS几个西纳特拉应用:
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作为最新版本。我的短期哈克的解决办法是简单地安装机架1.3.0有:
gem install rack -v 1.3.0 --install-dir /usr/lib/ruby/gems/1.8
这似乎已经奏效。希望这有助于任何人在那里撕掉他们的头发。
是的,我有同样的问题。谢谢 – jspooner 2011-07-11 02:32:00
我有同样的问题: “你已经激活架1.2.1,但你的Gemfile需要机架1.2.3”
- 加入Gemfile中:创业板架“, '1.2.1'
- 软件包更新
-
卸载机架版本> 1.2。1
[黄蜂] $宝石清单| grep的齿条
机架(1.2.1,1.1.0,1.0.1,1.0.0)
触摸TMP/restart.txt
- :)快乐
我也有类似的问题与Apache:“你已经激活架1.2.3,但你的Gemfile需要机架1.2.2考虑使用捆绑高管。”
的问题是,乘客安装机架1.2.3和我的Rails应用程序机架1.2.2:
$ gem list |grep rack
rack (1.2.2, 1.2.3)
尝试:
$ gem uninstall --version=1.2.3 rack
重启服务器和解决
我解决这样在Dreamhost上:
从Gemfile中删除任何行:gem'rack',....
rm Gemfile.lock
rm -rf .bundle
rm -rf vendor/bundle
安装/使用本地的宝石和重新生成文件 'Gemfile.lock的' 有:
bundle install
在厂商安装宝石/捆
bundle install --deployment
重启:
touch tmp/restart.txt
我在这个问题上与这个问题进行了数小时的斗争盟友放弃乘客。任何新版本的Rails将使用比Dreamhost的Passenger要求更新的Rack。
但是,您不需要Passenger来启动应用程序。 Dreamhost的提供了一些有关如何使用FastCGI启动应用程序很容易(和工作)的指令,你不会有损坏您的Gemfile在这个过程中:
这个作品在Rails的3.0.x中&客运3.0.15
创建一个文件:
config/setup_load_paths.rb
与内容:
require 'rubygems'
require 'bundler/setup'
乘客将载入您的Gemfile.lock中指定的机架宝石
+1我相信这是正确的答案(请参阅[乘客文档](http://modrails.com/documentation/Users%20guide%20Apache.html#bundler_support))。我自己通过阅读'lib/phusion_passenger/utils.rb'来解决这个问题,但是当我再次遇到问题时后来忘记了它。感谢您的提醒。当您*在不同机架版本上运行应用程序时,此方法尤其有效。 – Kelvin 2013-03-03 03:40:07
我的网站现在工作正常! – aren55555 2011-11-18 20:16:49