use*_*833 12 bundle ruby-on-rails upgrade gemfile ruby-on-rails-4
在Gemfile我做了以下改变:
-bash> git diff Gemfile
...
-gem 'rails', '4.0.4'
+gem 'rails', '4.0.5'
Run Code Online (Sandbox Code Playgroud)
然后我跑了bundle,得到一个停止显示的消息:
-bash> bundle
Fetching gem metadata from https://rubygems.org/........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
You have requested:
rails = 4.0.5
The bundle currently has rails locked at 4.0.4.
Try running `bundle update rails`
Run Code Online (Sandbox Code Playgroud)
然后我bundle update rails根据上面的消息跑了,得到了以下内容(注意我正在跳线而没有变化).
-bash> bundle update rails
Fetching gem metadata from https://rubygems.org/........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Installing rake 10.3.2 (was 10.3.0)
Installing multi_json 1.10.1 (was 1.9.2)
Installing activesupport 4.0.5 (was 4.0.4)
Installing actionpack 4.0.5 (was 4.0.4)
Installing actionmailer 4.0.5 (was 4.0.4)
Installing activemodel 4.0.5 (was 4.0.4)
Using activerecord-deprecated_finders 1.0.3
Installing activerecord 4.0.5 (was 4.0.4)
Installing railties 4.0.5 (was 4.0.4)
Installing rails 4.0.5 (was 4.0.4)
Your bundle is updated!
Run Code Online (Sandbox Code Playgroud)
问题:这是预期的行为吗?根据另一个用户,我希望看到什么锁定版本.
问题:为什么被rails 锁定?还有比我更好的处理这种情况的方法吗?
Ser*_*sev 16
这是预期的行为吗?
是.宝石有依赖性.更新gem时,它会获得更新的依赖项(例如,在rails的情况下,它是活动的*部分).
bundle update顺便说一句,这是成功的输出.这意味着依赖解析没有冲突.如果发生冲突,你会看到相反的.(类似'宝石A需要宝石B v1.2.3,但宝石C使用宝石B v4.5.6').
为什么铁轨被锁定?
因为Gemfile.lock指定了rails 4.0.4版.这个版本(来自锁定文件)将由bundler,部署等使用.简单地更改Gemfile中的版本不会影响加载哪个gem版本.bundle install/ bundle update是需要的.
有用的链接:http://viget.com/extend/bundler-best-practices
以下是规则:
- 始终使用捆绑安装
- 如果需要升级Bundler已在管理的依赖项,请使用bundle update gem_name.
- 除非您希望升级所有宝石,否则不要运行捆绑包更新.
| 归档时间: |
|
| 查看次数: |
15373 次 |
| 最近记录: |