检测生产中缺乏宝石

我在我的RoR应用程序投入生产之前做了bundle install --without development test,因为我想删除仅用于开发或测试的gem,但是前一天,这引起了问题。
我写了一些代码,它可以在开发中使用,但是它包含了gem提供的模块,该模块是作为development gem的依赖而安装的。我无意中使用过,因此无法注意到部署失败。所以我想检测一下。我正在使用CI,所以也许我可以注意到我是否进行了与生产中相同的bundle install操作,并且遇到了麻烦,但是如果这样做,CI会花费很长时间,所以我真的不想这么做。我很想听听您的想法。

编辑:我想您还没有明白我的意思,所以让我再解释一次。

例如,我的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)。我不想再做这样的事情,但是我可能会粗心大意,所以我想发现它。

doroyht 回答:检测生产中缺乏宝石

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

另外,尝试bundle config,如果看到不需要的without,则可以运行bundle config --delete without删除它们。

,

我将根据更新后的问题尝试解释我想问的问题:

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

如果是这样,我们将使用3个单独的管道/进程:

    Semaphore上的
  • CI / CD管道可运行我们的自动化测试。该管道无法捕获上述错误类型
  • 使用Heroku的review app功能来分隔管道,该功能使用虚拟/种子数据(但类似于生产设置)(例如bundle install --without development text)构建“实时”应用程序。该 可能会捕获上述错误类型;您可能必须使用应用程序来触发错误,有时我们不这样做
  • 我们还有一个单独的暂存环境,在该暂存环境中进行用户测试,这也类似于生产环境。在这里绝对应该确定这种类型的错误(因为我们有用户在这里通过使用站点来测试功能)

在我从事过的许多项目中,这是一种常见的策略,可以在将这种错误部署到生产之前捕获这种错误。

*因为生产中的捆绑程序正在运行bundle --without development test

本文链接:https://www.f2er.com/3162650.html

大家都在问