我正在使用ruby 1.9.3p194和bundler 1.1.4
在我的Gemfile中,我有这个:
group :production do
gem 'thin', '1.4.1'
end
当我运行$ rails s时,bundler会抱怨:
Could not find gem 'thin (>= 1.4.1) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.
我在开发环境下运行,所以它不应该关心它是否安装?剂量捆绑器强制您在运行$ rails时安装所有宝石?
我也试过这个小组:测试,同样的事情发生了。这对我来说没有意义,任何人都可以帮忙吗?
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'mysql2'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
group :production do
gem 'thin', '1.4.1'
end
gem 'devise', '2.1.2'
gem 'cancan', '1.6.8'
gem 'will_paginate', '3.0.3'
答案 0 :(得分:0)
问题可能是您正在运行rails s
,而您需要运行bundle exec rails s
。如果在命令前加bundle exec
,则在bundle的上下文中执行。然后,命令可以使用捆绑器可用的所有gem。
默认情况下,捆绑包中的gem安装在全局gem目录中。当你没有在命令前加bundle exec
时,这会产生令人困惑的结果:想象你的全局宝石中有rails 3.1和rails 3.2,你的Gemfile提到3.1。然后,当您在命令行中简单地说rails
时,您仍将从rails 3.2调用可执行文件。
现在当然thin
只有在没有安装全局宝石时才会丢失。假设您已使用--path
选项至少捆绑一次,您的gem已安装到其中指定的路径而不是全局存储库。使用--path
后,必须指定bundle exec
,否则根本就找不到宝石。