【问题标题】:Rack Error with DreamHost, Passenger, and Rails 3.0.0.rcDreamHost、Passenger 和 Rails 3.0.0.rc 的机架错误
【发布时间】:2023-11-05 03:29:01
【问题描述】:

背景:我查看了 this questionthis one - 遗憾的是,无济于事。

错误信息(乘客):您已经激活了 rack 1.1.0,但是您的 Gemfile 需要 rack 1.2.1。考虑使用 bundle exec。

我的宝石文件:

source 'http://rubygems.org'

gem 'rails', '3.0.0.rc'
gem 'nifty-generators' 
gem 'nokogiri'
group :after_initialize do
    gem 'feedzirra'
end

我的 Gemfile.lock 有这一行:

rack (1.2.1)

我的 environment.rb 在顶部有这一行:

ENV['GEM_PATH'] = File.expand_path('~/.gems') + ':/usr/lib/ruby/gems/1.8'

我的 boot.rb 在顶部有这一行:

Gem.clear_paths

我在本地正确安装了机架 (1.2.1) - 我的应用程序在本地主机上运行良好,并且版本 1.2.1 显示在终端中的“宝石列表”之后。

在将我的应用推送到我的生产服务器之前,我已经使用“捆绑包”打包了我的 gem。

在部署之前,我已经运行了以下命令(在我的生产服务器上,从应用的根目录):

bundle install --path vendor/bundle --local

按照上面的安装命令,“捆绑检查”会返回:

The Gemfile's dependencies are satisfied

这是乘客提供的回溯(连同上面提到的错误消息):

0   /home/user/.gems/gems/bundler-1.0.0/lib/bundler/runtime.rb      27      in `setup'
1   /home/user/.gems/gems/bundler-1.0.0/lib/bundler/spec_set.rb     12  in `each'
2   /home/user/.gems/gems/bundler-1.0.0/lib/bundler/spec_set.rb     12  in `each'
3   /home/user/.gems/gems/bundler-1.0.0/lib/bundler/runtime.rb  17  in `setup'
4   /home/user/.gems/gems/bundler-1.0.0/lib/bundler.rb  100     in `setup'
5   /home/user/gseeds.mywebsite.com/releases/20100927012812/config/boot.rb  9   
6   /usr/lib/ruby/1.8/rubygems/custom_require.rb    31  in `gem_original_require'
7   /usr/lib/ruby/1.8/rubygems/custom_require.rb    31  in `require'
8   /home/user/gseeds.mywebsite.com/releases/20100927012812/config/application.rb   1   
9   /usr/lib/ruby/1.8/rubygems/custom_require.rb    31  in `gem_original_require'
10  /usr/lib/ruby/1.8/rubygems/custom_require.rb    31  in `require'
11  /home/user/gseeds.mywebsite.com/releases/20100927012812/config/environment.rb   7   
12  /usr/lib/ruby/1.8/rubygems/custom_require.rb    31  in `gem_original_require'
13  /usr/lib/ruby/1.8/rubygems/custom_require.rb    31  in `require'
14  config.ru   3   
15  /usr/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/builder.rb  46  in `instance_eval'
16  /usr/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/builder.rb  46  in `initialize'
17  config.ru   1   in `new'
18  config.ru   1 

我想知道是否有人提出了解决方案?

需要注意的是,一个示例 Rails 应用程序 - 也就是运行 rails new appName 并直接通过 ftp 将其传输到 DreamHost 上的生产服务器 - 将运行良好。这让我感到不安,因为我想象我的真实应用程序和示例应用程序都具有机架(1.2.1)依赖项;这对我来说意味着,为了绕过 DreamHost 服务器 gem,我以某种方式在我的真实应用程序中弄乱了 rack 的实现。

我的示例 Rails 应用程序在 DreamHost 上的单独子域上运行,而我尝试部署的两个真实应用程序的子域都出现此错误。

另外,我最初尝试在我的 DreamHost 用户目录中本地安装 gems,然后再采用供应商/缓存方法。也许这不会影响任何事情..

感谢您解决这个凌乱/冗长的问题

【问题讨论】:

    标签: ruby-on-rails-3 passenger rack bundler dreamhost


    【解决方案1】:

    向 Dreamhost 投诉并告诉他们升级 Phusion Passenger。这个问题现已在 Phusion Passenger 的多个版本中得到修复。

    【讨论】:

    • 您好洪丽,您能告诉我们是哪个版本的乘客解决了这个问题吗?我的服务器有 2.2.4。
    • 从 2.2.14 或其他版本开始。我不记得确切的版本。只需升级到最新版本。