【问题标题】:Ruby gem common deployement for all apps所有应用程序的 Ruby gem 通用部署
【发布时间】:2017-06-22 07:01:43
【问题描述】:

我正在尝试部署 scout app 提供的 APM 解决方案。 Scout apm 文档说我需要在服务器上运行的所有应用程序中安装一个 gem。我有多个应用程序在单个服务器上运行。我所有的 ruby​​ 应用程序都位于/var/www。有没有一种方法可以将 apm gem 部署在一个地方,然后它可以用于所有服务。这样我就不需要将它添加到每个应用程序Gemfile 及其在config 文件夹中的配置文件中。我知道我可以使用 shell 脚本来实现它,但是这种方法的问题是所有应用程序都有自己的 git repo,这对我来说将是管理开销。

【问题讨论】:

  • 为什么将依赖项添加到每个 Gemfile 会出现问题?听起来对我来说是一个非常简单的解决方案。
  • 我有 90 多个这样的应用程序,我必须在其中做这个练习。这不是管理开销吗?
  • 您的应用程序是否已经拥有“共享逻辑”gem?您可能会将其添加为该 gem 的运行时依赖项。否则……你可以编写一个小 shell 脚本来一次更新所有 90 多个 Gemfile。

标签: ruby-on-rails ruby git rubygems


【解决方案1】:

不,您必须将要在应用程序中使用的 gem 添加到 Gemfile。因为如果您不将该gem 添加到应用程序的Gemfile,那么应用程序将根本不会加载该gem。

另一种选择可能是在服务器上全局安装 gem,并在每个应用程序中手动安装 require 该 gem。但这仍然意味着您必须向所有应用程序添加require 'gem_name',这很容易出错,因为您失去了bundler 提供的魔力。

tl;dr:不,您必须将 gem 添加到每个应用程序的 Gemfile

【讨论】:

  • 还有其他方法吗?或者只能通过将 gem 添加到所有应用程序来实现。就像 Common Gemfile 一样,我们可以在其中放置所有应用程序使用的通用 gem。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多