Ресурсы Rails: прекомпиляция использует неверную версию компоновщика - PullRequest
1 голос
/ 19 апреля 2019

Я недавно обновил свое приложение 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

Ответы [ 2 ]

3 голосов
/ 19 апреля 2019

Возможно, вам придется заставить Bundler управлять зависимостями:

bundle exec rails assets:precompile

Где это гарантирует, что среда Gem заблокирована в соответствии с Gemfile.

Rails обычно пытается получитьэто работает для вас, но бывают случаи, когда он не может синхронизировать вещи, и поведение, которое вы видите, проявляется.

1 голос
/ 22 апреля 2019

Кажется, что была ошибка в Ruby 2.4.0 при обновлении до 2.4.5 исправлена ​​эта проблема.

...