Rails资产:预编译使用错误的bundler版本

问题描述 投票:1回答:2

我最近更新了我的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
ruby-on-rails ruby docker dockerfile bundler
2个回答
3
投票

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

bundle exec rails assets:precompile

在那里确保Gem环境被锁定在Gemfile

Rails通常试图让这个适合你,但有时候它不能让事情同步,你所看到的行为就会显现出来。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.