在这里完成Ruby和Rails的新人...过去曾尝试过一些教程,但这是关于它的。我试图遵循Ruby on Rails 3教程'预订并找到了一个障碍,我在这里和谷歌搜索后找不到任何帮助..
我还没有做过任何事情;只有:
rails new first_app
然后将Gemfile sqlite3更改为
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
当我运行'捆绑安装'我得到以下内容:
Fetching gem metadata from http://rubygems.org/.........
Bundler could not find compatible versions for gem "bundler":
In Gemfile:
rails (= 3.0.1) ruby depends on
bundler (~> 1.0.0) ruby
Current Bundler version:
bundler (1.1.3)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
我尝试通过
卸载捆绑包gem uninstall bundler -v 1.1.3
然后通过
安装bundler v1.0.0gem install bundler -v 1.0.0
但它似乎让我捆绑了1.1.2 ..
我觉得我已经走到了死胡同,无法找到有关如何解决这个问题的更多信息。
任何帮助都会受到极大的赞赏并获得丰厚的培根......
更新更新更新
我无法使用bundler v 1.1.2进行卸载。我终于能够通过以下方式卸载所有的宝石:
sudo gem list | cut -d" " -f1 > gem_list.txt
cat gem_list.txt | xargs sudo gem uninstall -aIx
cat gem_list.txt | xargs sudo gem install
然后重新安装......这样我就可以进行“捆绑安装”了。并走上正轨..谢谢大家的帮助!
答案 0 :(得分:9)
首先验证您的版本以确保它们都是最新的:
$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]
$ rails -v
Rails 3.2.2
$ gem list bundler
*** LOCAL GEMS ***
bundler (1.1.3)
如果您需要更新ruby,可以从https://www.ruby-lang.org下载或使用ruby-build等工具。如果你有任何版本的Ruby 1.9.3现在都可以。
更新所有宝石:
gem update --system
gem update
宝石可能会在几个不同的地方安装宝石,这些宝石会相互干扰。有系统宝石(通常由root或使用sudo安装)和您的个人用户宝石。我最喜欢的管理方法是使用一个名为rbenv的简单工具。一个相关的工具是rvm。要么没事。
对于您的第一个教程,您可以跳过Gemfile中的版本号:
- gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
+ gem 'sqlite3-ruby', :require => 'sqlite3'
Bundler将以正确的方式排序所有内容。最终,如果您正在与其他开发人员协作或构建生产系统,则需要指定版本号。
欢迎在这里提问,我会加入这个答案。
答案 1 :(得分:7)
也许您的计算机上安装了bundler 1.1.2 AND 1.1.3(可能还有更多版本)
使用
gem list bundler
检查您安装的捆绑包的版本。
然后用
删除你不想要的那些gem uninstall bundler -v VERSION_NUMBER
答案 2 :(得分:7)
这是因为gems也安装在全局gemset中,您可以使用以下命令卸载它:
rvm @global do gem uninstall bundler
但您也可以使用其他版本的bundler:
gem install bundler -v '~>1.0.0'
bundle _1.0.0_ install
将1.0.0替换为已安装的版本(如果是其他)
答案 3 :(得分:6)
您可以使用最新版本的Rails 3.0(3.0.12)。它支持最新的捆绑包,并没有从根本上与3.0.1
不同答案 4 :(得分:1)
我遇到了这个问题,来源是bundler
文件中.gemspec
的版本规范:
spec.add_development_dependency "bundler", "~> 1.16"
删除版本号解决了该问题:
spec.add_development_dependency "bundler"
答案 5 :(得分:0)
有时候,要解决此问题的标题中提到的问题,只需删除Gemfile.lock并运行bundle update
。我希望这对某人有帮助。
答案 6 :(得分:-1)
Bundler是rails的依赖gem,因此您只能在gemfile.lock
而不是gemfile
中看到它。
对于特定的rails版本,只有一系列bundler gems兼容。我也遇到了这个错误,我尝试卸载我不需要的那个版本的bundler gem。我还尝试使用bundle_x.x.x_install
强制安装,但是当事情不起作用时,我明确提到了gem指定版本落在我正在使用的rails版本所需的范围内。可能它不是正确的方式,但这就是事情对我有用的方式。