【问题标题】:Detecting lack of gems in production检测生产中缺少宝石
【发布时间】:2019-11-05 21:53:54
【问题描述】:

在我的 RoR 应用程序在生产中工作之前,我会使用 bundle install --without development test,因为我想删除仅用于开发或测试的 gem,但前几天,这导致了问题。
我写了一些代码,它在开发中工作,但它包含 gem 提供的模块,它是作为开发 gem 的依赖项安装的。我无意中使用了,所以我没有注意到部署失败。所以我想检测它。我正在使用 CI,所以也许我可以注意到我是否在生产中执行相同的 bundle install 并且出现了一些问题,但是如果我这样做,CI 将需要很长时间,所以我真的不想这样做。我很想听听你的想法。

edit:我想你还没明白我的意思,所以让我再解释一下。

例如,我的 Gemfile 如下所示;

ruby '2.5.7'

gem 'rails', '5.2.2.1'

gem 'pg', '>= 0.18', '< 2.0'

gem 'puma', '~> 3.11'

...

group :development, :test do

  gem 'overcommit'
  gem 'rails_best_practices'
  gem 'rubocop' # <- this gem also install unicode_display_width(which has `Unicode::DisplayWidth`) as dependency
end

group :development do
  gem 'brakeman'
  gem 'debase'
  gem 'rack-mini-profiler', require: false
  gem 'ridgepole'
  gem 'ruby-debug-ide', '0.6.0'
...
end

group :test do
  gem 'simplecov'
  ...
end

我在我的应用程序中使用了Unicode::DisplayWidth,因为我完全认为它是 ruby​​ 最初拥有的库(如 csv)。我不想再做这样的事情,但我可能会不小心,所以我想检测它。

【问题讨论】:

  • 试试下面 kurupt_89 的建议。如果您执行cat .bundle/config,您应该会看到您通过--without 标志(以及其他)设置的设置。您可以手动编辑该文件,或运行 config delete 命令。 --without 标志有点傻,默认情况下,它会将其作为配置设置写入,并且即使您停止传递它也会在捆绑命令中持续存在
  • 对不起我笨拙的英语。我在我的问题中添加信息。

标签: ruby-on-rails ruby rubygems


【解决方案1】:

从您的描述中并不清楚您的问题是什么。但是请查看bundle list 以查看已安装的gem https://bundler.io/man/bundle-list.1.html

另外,请尝试bundle config,如果您看到任何您不期望的without,您可以运行bundle config --delete without 来删除它们。

【讨论】:

    【解决方案2】:

    我将尝试根据您更新的问题解释我认为您要问的内容:

    您希望 CI 管道检测您是否在代码中使用了无法通过 bundler* 提供的库,但您不希望使用另一个 bundle install 命令减慢 CI 管道的速度。

    如果是这样,我们有 3 个单独的管道/流程可供我们使用:

    • 在 Semaphore 上运行我们的自动化测试的 CI/CD 管道。此管道不会捕获上述类型的错误
    • 使用 Heroku 的 review app 功能分离管道,该功能使用虚拟/种子数据构建“实时”应用程序,但使用类似生产的设置(例如 bundle install --without development text)。这可能捕获上述错误类型;您可能必须使用评论应用来触发错误,有时我们不会
    • 我们还有一个单独的登台环境,用于进行用户测试,这也类似于生产环境。这是肯定应该识别这种类型的错误的地方(因为我们有用户在这里使用该网站测试功能)

    在我参与的多个项目中,这是一种常见的策略,用于在将此类错误部署到生产环境之前对其进行捕捉。

    * 因为在生产环境中运行 bundler bundle --without development test

    【讨论】:

      猜你喜欢
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多