加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 我应该在系统存储库(全局)还是项目供应商/软件

发布时间:2020-12-17 03:24:46 所属栏目:百科 来源:网络整理
导读:我在 Windows 7上使用 Ruby 2.1和Rails 4.1.每当我运行bundle install时,所有gem都安装在系统路径c:/Ruby21/lib/ruby/gems/2.1.0/gems/中.我还在项目中找到了vendor目录. 从PHP composer和node.js npm背景开始,所有依赖项应本地安装在项目供应商文件夹或nod
我在 Windows 7上使用 Ruby 2.1和Rails 4.1.每当我运行bundle install时,所有gem都安装在系统路径c:/Ruby21/lib/ruby/gems/2.1.0/gems/中.我还在项目中找到了vendor目录.

从PHP composer和node.js npm背景开始,所有依赖项应本地安装在项目供应商文件夹或node_modules文件夹中.所以,我的问题是:

>我应该在系统路径或供应商/捆绑中安装gem吗?
>如果系统路径中应安装所有宝石或某些宝石,那么它如何影响我可能无法访问shell的生产环境?
>是否应在供应商/捆绑中安装所有宝石或特定宝石?
>如何在vendor / bundle中安装gem?

解决方法

运行bundle install时,您使用的是名为 Bundler的工具.

> Bundler以与Composer类似的方式管理您的依赖项,但它不是在项目文件夹中安装所有内容,而是在系统范围内安装您的所有项目共享的gem.它通过使用项目文件夹中的Gemfile来跟踪哪个项目需要哪些库.所以,你应该让Bundler做它的事情,它做得很好,并且是Rails的标准包管理器.
>如果您的主机支持Ruby和Rails应用程序(例如,像Heroku这样的PaaS),它肯定会支持Bundler并且将安装所有必需的gem.如果你在讨论一个没有shell访问权限的廉价共享主机,那么无论如何你都无法在那里部署Ruby应用程序,因为你需要安装实际的Ruby解释器和其他需要shell访问的东西.
>不.
>你不应该. this article描述了如何做到这一点,但在我看来

countless times where installing gems globally leaked into other projects on the same machine and led to weird behavior that was annoying to debug

这篇文章的作者只发生过一次,我认为Bundler没有错.在任何情况下,你应该总是在bundle exec之前添加gem命令(如在bundle exec rspec中),你将永远不会遇到上述问题. bundle exec确保当你从gem执行命令时,调用Gemfile中定义的正确版本,如果你的系统中安装了同一个gem的多个版本,这一点很重要.

几年前当RVM受欢迎时,gemsets实现了类似的目标,但在rbenv和Bundler之前大部分都被弃用了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读