gpt4 book ai didi

ruby-on-rails - 我应该在系统存储库(全局)或项目供应商/ bundle (本地)中安装 ruby​​ gems 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:05 25 4
gpt4 key购买 nike

我在 Windows 7 上使用 Ruby 2.1 和 Rails 4.1。每当我运行 bundle install 时,所有 gem 都安装在系统路径 c:/Ruby21/lib/ruby/gems/2.1.0/ gem /。我还在我的项目中找到了 vendor 目录。

来自 PHP composernode.js npm后台,所有的依赖都应该本地安装在项目的vendor文件夹或者node_modules文件夹中。所以,我的问题是:

  1. 我应该在系统路径或 vendor/bundle 中安装 gems?
  2. 如果所有 gem 或部分 gem 应该安装在系统路径中,它会如何影响我可能无法访问 shell 的生产环境?
  3. 应该将所有 gem 还是特定 gem 安装在 vendor/bundle 中?
  4. 如何在 vendor/bundle 中安装 gem?

最佳答案

当您运行 bundle install 时,您正在使用一个名为 Bundler 的工具.

  1. Bundler 以与 Composer 类似的方式负责管理您的依赖项,但它不是在项目文件夹中安装所有内容,而是在系统范围内安装您的 gem,这些 gem 在您的所有项目中共享。它通过使用项目文件夹中的 Gemfile 来跟踪什么项目需要哪些库。所以,您应该让 Bundler 做它的事,它做得很好,并且是 Rails 的标准包管理器。

  2. 如果您的主机支持 Ruby 和 Rails 应用程序(例如,像 Heroku 这样的 PaaS),它肯定支持 Bundler 并且将安装所有必要的 gem。如果您谈论的是没有 shell 访问权限的廉价共享主机,那么无论如何您都无法在那里部署 Ruby 应用程序,因为您将需要安装实际的 Ruby 解释器和其他需要 shell 访问权限的东西。

  3. 没有。

  4. 你不应该。有 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 有错。在任何情况下,您都应该始终在 gem 命令前添加 bundle exec(如 bundle exec rspec),这样您就永远不会遇到上述问题。 bundle exec 确保当您从 gem 执行命令时,会调用 Gemfile 中定义的正确版本,如果您的系统中安装了同一 gem 的多个版本,这一点很重要。

几年前RVM流行的时候,gemsets实现了类似的目标,但大部分被弃用 rbenv和 bundler 。

关于ruby-on-rails - 我应该在系统存储库(全局)或项目供应商/ bundle (本地)中安装 ruby​​ gems 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com