ruby-on-rails - Rails 资产:预编译使用了错误的捆绑器版本
问题描述
我最近更新了我的 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 片段(在最后一步):
RUN gem install bundler
RUN bundle install
RUN yarn install
RUN rails assets:precompile --trace
解决方案
您可能需要强制 Bundler 管理依赖项:
bundle exec rails assets:precompile
这可以确保 Gem 环境按照Gemfile
.
Rails 通常会尝试让这个为你工作,但有时它不能让事情完全同步并且你看到的行为会表现出来。
推荐阅读
- python - 使用编码的谷歌身份验证文件从 python 运行大查询
- spring-data-jpa - Spring Webflux(Reactor)调度程序在错误后不会终止
- android - 如何从非上下文类安全地调用意图服务?
- c# - Dynamics CRM 中的 CalculatePrice 消息
- webpack - 如何使用 babel 和 webpack 进行动态代码拆分?
- ios - Firebase DebugView iOS 设备名称
- google-apps-script - 如何使用 Google Script 检查安全设置?
- amazon-web-services - aws cli 命令更改默认 sing in 方法
- postgresql - (postgreSQL 9.5)使用 make_date 奇数插入带有日期列的表
- reactiveui - 用 ReactiveUI Observable 包装 IEnumerable