0

我有不同的宝石

> rvm gemset list
gemsets for ruby-2.0.0-p247 (found in /Users/kai/.rvm/gems/ruby-2.0.0-p247)
=> (default)
   global
   rails4

> rvm gemset use rails4
Using ruby-2.0.0-p247 with gemset rails4

> rails -v
/Users/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'railties' (>= 0) among 43 total gem(s) (Gem::LoadError)
    from /Users/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec'
    from /Users/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem'
    from /usr/bin/rails:22:in `<main>'
    from /Users/kai/.rvm/gems/ruby-2.0.0-p247@rails4/bin/ruby_noexec_wrapper:14:in `eval'
    from /Users/kai/.rvm/gems/ruby-2.0.0-p247@rails4/bin/ruby_noexec_wrapper:14:in `<main>'

当我在做的时候:

> bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.1.0) 
Installing i18n (0.6.4) 
Installing multi_json (1.7.9) 
Installing activesupport (3.2.7) 
Installing builder (3.0.4) 
Installing activemodel (3.2.7) 
Installing erubis (2.7.0) 
Installing journey (1.0.4) 
Installing rack (1.4.5) 
Installing rack-cache (1.2) 
Installing rack-test (0.6.2) 
Installing hike (1.2.3) 
Installing tilt (1.4.1) 
Installing sprockets (2.1.3) 
Installing actionpack (3.2.7) 
Installing mime-types (1.23) 
Installing polyglot (0.3.3) 
Installing treetop (1.4.14) 
Installing mail (2.4.4) 
Installing actionmailer (3.2.7) 
Installing arel (3.0.2) 
Installing tzinfo (0.3.37) 
Installing activerecord (3.2.7) 
Installing activeresource (3.2.7) 
Installing coffee-script-source (1.6.3) 
Installing execjs (1.4.0) 
Installing coffee-script (2.2.0) 
Installing rack-ssl (1.3.3) 
Installing json (1.8.0) 
Installing rdoc (3.12.2) 
Installing thor (0.18.1) 
Installing railties (3.2.7) 
Installing coffee-rails (3.2.2) 
Installing jquery-rails (3.0.4) 
Using bundler (1.3.5) 
Installing rails (3.2.7) 
Installing sass (3.2.10) 
Installing sass-rails (3.2.6) 
Installing sqlite3 (1.3.7) 
Installing uglifier (2.1.2) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

但我有红宝石2.0!为什么它不安装 rails 4.0 和 activesupport 4.0?

4

2 回答 2

2

bundler根据两个文件安装 gems:

  1. Gemfile.lock以前安装时保存的严格版本,
  2. Gemfile来自用户的松散版本声明。

当您rails首先生成项目时,会生成Gemfile如下内容:

gem 'rails', '~> 3.2'

文件生成后bundle install运行,Gemfile.lock其中记录了严格版本的 gems,从现在开始,任何后续调用都bundle install将仅安装保存在Gemfile.lock.

要将 gem 更新到较新的版本:

  1. 检查Gemfile任何版本限制 - 这可能会阻止安装您想要获得的版本
  2. 运行bundle update <gem_name>以仅更新此单个 gem 及其所需的内容 - 但将更改范围最小化为​​尽可能小的更改集。
  3. 运行bundle update以将所有 gem 更新到允许的最新版本Gemfile
于 2013-08-12T19:38:35.980 回答
0

bundle install或者简而言之bundle,除非您在 Gemfile 中遗漏了版本,否则不会安装最新的 gem。例如

gem 'rails'

但通常情况并非如此,我们指定版本以防止应用程序在更新某些 gem 并且我们在不知不觉中运行时“崩溃” bundle update,或者就此将应用程序移动到测试或生产服务器。通常在向 Gemfile 添加 gem 时,我们会这样做:

gem 'rails', '~> 3.2.7'

请注意版本号中的前导~>。这说:在版本之间使用 rails gem3.2.7小于3.3.0.

为了让您的 bundle 命令获取 rails 4.0,您需要更改该行以读取以下任一内容:

gem 'rails', '>= 3.2.7' 

或者

gem 'rails', '4.0.0'

如果您使用gem 'rails', '>= 3.2.7',那么您的 rails 应用程序将使用系统中可用的最新 gem。请注意,这3.2.7只是我在这里使用的一个示例。如果您使用gem 'rails', '4.0.0',那么您的 rails 应用程序将使用 rails 版本 4.0.0。

请注意,此更改可能会破坏您现有的 rails 3.2 应用程序。

于 2013-08-12T19:34:16.197 回答