Ruby on rails Rails-使用精简配置时出现捆绑程序错误

Ruby on rails Rails-使用精简配置时出现捆绑程序错误,ruby-on-rails,bundler,thin,Ruby On Rails,Bundler,Thin,我开始使用bundler,但在使用过程中遇到了一些问题。我有以下档案: source "http://rubygems.org" gem "rack", "~>1.1" gem 'pg','>= 0.8.0' gem 'rails','2.3.8' gem 'authlogic','2.1.3' gem 'ajaxful_rating','2.2.3' gem 'will_paginate','2.3.12' gem 'right_aws','1.10.0' gem 'aws-s3'

我开始使用bundler,但在使用过程中遇到了一些问题。我有以下档案:

source "http://rubygems.org"
gem "rack", "~>1.1"
gem 'pg','>= 0.8.0'
gem 'rails','2.3.8'
gem 'authlogic','2.1.3'
gem 'ajaxful_rating','2.2.3'
gem 'will_paginate','2.3.12'
gem 'right_aws','1.10.0'
gem 'aws-s3','0.6.2'
gem 'declarative_authorization','0.4.1'
gem 'timeline_fu','0.3.0'
gem 'friendly_id','>= 3.1'
请注意,我特别希望使用rack 1.1(1.1.0)

当我使用thin运行时,出现以下错误(Webrick工作正常):

因此,基本上它是在抱怨我在使用rack 1.2.1(事实并非如此,我想不出任何东西在使用它)

有什么想法吗?

把自己瘦在架子上。而且,由于Thin将在加载应用程序之前加载自身,所以bundler首次进入图片时,最新版本的Rack将已经加载

您必须强制正确版本的机架变薄。理论上,您的系统gems中只能有Rack 1.1.0,但这很难维护或移植。错误消息已包含答案;使用
bundle exec

bundle exec thin start

你可以在heroku的网站上找到关于使用瘦的信息。此外,他们还建议使用薄。 另请参见

因此,基本上它是在抱怨我使用了rack 1.2.1(这是 不是这样,我想不出有什么用它)

我也这么想,但事实的确如此。Rubygems正在使用最新版本。Bundler允许您通过使用

bundle exec foo
当您将gem安装到系统时,Rubygems会为其创建包装器 gem提供的每个可执行文件。当你运行一个 不带bundle exec的命令行可执行文件,此包装器 调用Rubygems,然后使用正常的Rubygems激活 调用gem的可执行文件的机制。这在过去已经改变了 几个月后,Rubygems将调用最新版本的gem 即使Gemfile.lock指定了 不同的版本。此外,它将激活最新版本 (兼容)该gem依赖项的已安装版本,即使 在Gemfile.lock中指定了不同的版本


我无法帮助您使用Heroku,也许他们的捆绑程序文档会有所帮助:我不明白为什么rack 1.2.1被用作默认版本。bundler的全部目的不是告诉您应该使用哪些版本的gems吗?我知道应该有一些初始加载的机架,但为什么不自动加载到机架1.1.0,如果这是定义的话;因此,如果Bundler没有首先加载,就无法修复版本不匹配的问题。解决方案是
bundle exec
,这正是它存在的原因。感谢Molf,我明白了,现在我的主要问题是如何让它在Heroku上工作。我找不到如何在Heroku上发出命令。
bundle exec foo