【发布时间】:2012-03-06 06:08:23
【问题描述】:
我在 DreamHost 上开设了一个专用托管帐户。我为此部署了一个 Rails 应用程序。我收到以下错误。
You have already activated rack 1.2.1, but your Gemfile requires rack 1.3.6. Using bundle exec may solve this.
我检查了版本。
$ gem list -d rack
rack (1.2.1, 1.1.0, 1.0.1, 1.0.0)
Author: Christian Neukirchen
Rubyforge: http://rubyforge.org/projects/rack
Homepage: http://rack.rubyforge.org
Installed at (1.2.1): /usr/lib/ruby/gems/1.8
(1.1.0): /usr/lib/ruby/gems/1.8
(1.0.1): /usr/lib/ruby/gems/1.8
(1.0.0): /usr/lib/ruby/gems/1.8
机架 1.3.6 不存在。但是当我用“bundle show”检查它时,它已经安装好了。 (其实我做了“bundle install --deployment”)
$ bundle show rack
/.../my_rails_app_root/vendor/bundle/ruby/1.8/gems/rack-1.3.6
我有 config/setup_load_paths.rb
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
begin
rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
rvm_lib_path = File.join(rvm_path, 'lib')
$LOAD_PATH.unshift rvm_lib_path
require 'rvm'
RVM.use_from_path! File.dirname(File.dirname(__FILE__))
rescue LoadError
# RVM is unavailable at this point.
raise "RVM ruby lib is currently unavailable."
end
end
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'
其实我找到了解决办法。只需“gem install rack -v 1.3.6”即可解决问题。
但是为什么乘客会选择系统的 rack gem(或用户的 rack gem)而不是 bundle 的 rack gem?你如何避免这个问题?
谢谢。
山姆
【问题讨论】:
-
我尝试安装 Rack 1.3.6 但对我不起作用。还是说“已经激活 rack 1.2.1”。