【问题标题】:Rails assets:precompile is using wrong bundler versionRails 资产:预编译使用了错误的捆绑器版本
【发布时间】:2019-04-18 23:25:50
【问题描述】:

我最近更新了我的 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.为什么即使使用 bundler 也要预编译资产?

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

这是我的 Dockerfile 的 sn-p 失败(在最后一步):

RUN gem install bundler

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

【问题讨论】:

    标签: ruby-on-rails ruby docker dockerfile bundler


    【解决方案1】:

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

    bundle exec rails assets:precompile
    

    确保 Gem 环境按照Gemfile 锁定的位置。

    Rails 通常会尝试让此功能为您工作,但有时它无法使事情完全同步并且您看到的行为会表现出来。

    【讨论】:

    • 嗯,我在添加bundle exec时遇到了同样的错误
    • 尝试RUN bundle -v 看看是否显示了正确版本的捆绑程序。
    • 您需要以某种方式删除该 Bundler 版本。 gem uninstall 是一个开始的地方。
    • 有许多预先构建的 Ruby + Linux 容器是一个很好的开始基础。我之前使用 RVM 构建了自己的 RVM,这是对我手头上的 Ansible 基础架构的改编,但通常有更好维护的容器,比如那些乘客容器。
    • 似乎是 Ruby 2.4.0 升级到 2.4.5 中的一个错误修复了这个问题。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多