Sit*_*thu 5 ruby gem rubygems ruby-on-rails
我在Windows 7上使用Ruby 2.1和Rails 4.1.每当我运行时bundle install,所有宝石都安装在系统路径中c:/Ruby21/lib/ruby/gems/2.1.0/gems/.我还在vendor我的项目中找到了该目录.
来自PHP composer和node.js npm后台,所有依赖项应本地安装在项目vendor文件夹或node_modules文件夹中.所以,我的问题是:
vendor/bundle?vendor/bundle?vendor/bundle?运行时bundle install,您使用的是名为Bundler的工具.
Bundler以与Composer类似的方式管理您的依赖项,但它不是在项目文件夹中安装所有内容,而是在系统范围内安装您的所有项目共享的gem.它通过使用项目文件夹中的Gemfile来跟踪哪个项目需要哪些库.所以,你应该让Bundler做它的事情,它做得很好,并且是Rails的标准包管理器.
如果您的主机支持Ruby和Rails应用程序(例如,像Heroku这样的PaaS),它肯定会支持Bundler并且将安装所有必需的gem.如果你在讨论一个没有shell访问权限的廉价共享主机,那么无论如何你都无法在那里部署Ruby应用程序,因为你需要安装实际的Ruby解释器和其他需要shell访问的东西.
没有.
你不应该.有这篇文章描述了如何做到这一点,但在我看来,
无数次安装gems全局泄露到同一台机器上的其他项目中,并导致令人讨厌的奇怪行为
这篇文章的作者只发生过一次,我认为Bundler没有错.在任何情况下,您应该始终使用bundle exec(如在bundle exec rspec)中添加gem命令,并且您将永远不会遇到上述问题.bundle exec确保当您从gem执行命令时,调用Gemfile中定义的正确版本,如果您的系统中安装了多个版本的相同gem,则这一点非常重要.
几年前,当RVM受欢迎时,gemsets实现了类似的目标,但大部分被rbenv和Bundler 弃用.