我最近更新了我的dockerized rails app(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
的一个错误修复了这个问题。