与DreamHost,Passenger和Rails 3.0.0.rc的机架错误

背景:我已经看到这个问题 ,也是这个问题 – 可惜的是,没有用。

错误消息(乘客):您已经启动机架1.1.0,但是您的Gemfile需要机架1.2.1。 考虑使用bundle exec。

我的Gemfile:

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出现在terminal的“gem list”之后。

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

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

 bundle install --path vendor/bundle --local 

在上面的安装命令之后,“捆绑检查”返回这个:

 The Gemfile's dependencies are satisfied 

这是乘客提供的回溯(以及上面提到的错误信息):

 0 /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/runtime.rb 27 in `setup' 1 /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/spec_set.rb 12 in `each' 2 /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/spec_set.rb 12 in `each' 3 /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/runtime.rb 17 in `setup' 4 /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler.rb 100 in `setup' 5 /home/bbahry/gseeds.brentbahry.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/bbahry/gseeds.brentbahry.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/bbahry/gseeds.brentbahry.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 

我想知道是否有人提出了这个解决scheme?

应该注意的是,一个示例rails应用程序 – 也就是说,运行一个rails新的appName,并直接ftp到DreamHost的生产服务器 – 将运行良好。 这让我不安,因为我想我的真实应用程序和示例应用程序都具有机架(1.2.1)依赖性; 这意味着,为了绕过DreamHost服务器的gem,我在某种程度上搞乱了在我的真实应用中机架的实现。

我有我的示例轨应用程序运行在DreamHost上的一个单独的子域,同时得到这两个我试图部署的真实应用程序的子域的错误。

此外,我最初尝试在采用供应商/caching方法之前在本地DreamHost用户目录中安装gem。 也许这不会影响任何东西..

感谢这个凌乱的问题

DreamHost不支持Rails 3.从某种意义上说,他们没有更新一些必要的gem版本来运行Rails 3应用程序,而且你没有能力让自己的gem取代DreamHost已经安装的gem版本。

在这种情况下,我的testing应用程序没有使用任何冲突的gem(只显示默认的index.html页面),但是任何真正的应用程序都会,这就是为什么我的其他rails 3应用程序没有工作。

(我提交了一个问题票,DreamHost告诉我,在Rails 3支持之前还需要一段时间。)

一个解决scheme是要么与VPS(我推荐Linode)或尝试Heroku。 有一个机会,你可以find一个好的共享主机,也支持rails 3应用程序 – 一个机会。

VPS保证完全控制,避免像DreamHost那样的场景。 而Heroku使部署变得轻而易举,但如果他们不支持您的应用程序所需的gem/服务,稍后可能会遇到问题。 另外,Heroku在服务器资源方面给了你很大的代价。 我目前正在Linode上运行。