Rails assets:precompile 使用了错误的捆绑器版本

Rails assets:precompile is using wrong bundler version

我最近更新了我的 dockerized rails 应用程序(5.0 -> 5.2),现在我正在使用 Bundler 2。

我已将 RUN gem install bundler 添加到我的 Dockerfile 以确保我已安装 Bundler 2。我的 RUN bundle install 步骤运行良好,但是当我进入资产预编译步骤时,它似乎又开始使用 Bundler 1:

Step 12/17 : RUN rails assets:precompile --trace
 ---> Running in facccf7d562c
/usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)

1.为什么资产预编译甚至使用捆绑器?

2。我怎样才能强制它给用户 Bundler 2?

这是我的 Dockerfile 的片段(在最后一步):

RUN gem install bundler

RUN bundle install
RUN yarn install
RUN rails assets:precompile --trace

您可能需要强制 Bundler 管理依赖项:

bundle exec rails assets:precompile

确保 Gem 环境按照 Gemfile.

锁定

Rails 通常会尝试让它为您工作,但有时它无法使事情完全同步并且您看到的行为很明显。

似乎是 Ruby 2.4.0 升级到 2.4.5 中的一个错误修复了这个问题。