cja*_*mes 3 ruby-on-rails bundler rvm rvmrc
如果Bundler检索到正确的gems(和依赖项)并将它们锁定在给定项目的Gemfile.lock中,那么对于同一个项目是否过度杀戮不使用gemset?我被告知使用gemsets仍然是一个很好的做法,因为在你当前的PATH中只有2个版本的同一个gem会导致冲突.这是正确的,还是只需要一个或另一个:Bundler或RVM?
如果你使用的是捆绑器,那么使用RVM的gemsets是多余的.
使用Bundler时的冲突主要有两个原因:
rails g migration或调用时会去哪里rake?如果您在Gemfile中更明确地指定gem版本,则可以解决第一个问题.
在使用Gemfile的项目中工作时,可以通过在可执行调用前添加前缀来解决第二个问题bundle exec,该调用将在当前包的上下文中运行命令(例如bundle exec rake db:migrate).
如果要在Gemfile的上下文之外指定gem版本(例如rails new fancy_app),可以通过将其作为由下划线包围的第一个参数来指定任何gem的版本.
rake --version
rake _10.3.1_ --version
rails new rails_latest_app
rails _3.2.12_ new rails_3_app
rails _4.0.4_ new rails_4_app
Run Code Online (Sandbox Code Playgroud)
RubyGems通过为任何gem的可执行文件创建版本感知包装器来为您处理所有这些.只要运行cat `which gem_executable`(与gem_executable被类似rake,rails,foreman,pry,等),看一看.
Stephen Ball有一篇关于如何使用Bundler而不是RVM gemsets的博客文章,它更详细地探讨了重叠.
虽然RVM的gemsets不是必需的,但RVM提供了其他便利:
PATH,这样就可以避免输入bundle exec.请注意,bundler插件oh-my-zsh提供相同的功能ruby版本管理器也rbenv提供类似的功能.
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |