Bundler запускается из Windows, сбой в docker image: Bundler не удалось найти совместимые версии для gem «nokogiri»

#ruby-on-rails #ruby #docker #bundler #nokogiri

#ruby-on-rails #ruby #docker #bundler #nokogiri

Вопрос:

Обновление: Удален файл блокировки, чтобы он мог восстанавливаться внутри контейнера docker, и теперь я получаю эту ошибку при запуске вместо этого:

 /usr/local/bundle/gems/bootsnap-1.4.2/lib/bootsnap/compile_cache/iseq.rb:37:in `fetch': Resource temporarily unavailable - bs_fetch:atomic_write_cache_file:rename (Errno::EAGAIN)
  

Я пытаюсь запустить приложение rails как docker image, и я получаю сообщение об ошибке, касающееся версии nokogiri. обновление пакета ничего не меняет, и удаление nokogiri gem тоже не меняет.

Вот сообщение об ошибке, которое я получаю из образа docker:

 service_1  | Bundler::VersionConflict: Bundler could not find compatible versions for gem "nokogiri":
service_1  |   In snapshot (Gemfile.lock):
service_1  |     nokogiri (= 1.10.2)
service_1  |
service_1  |   In Gemfile:
service_1  |     capybara (>= 2.15) was resolved to 3.15.0, which depends on
service_1  |       nokogiri (~> 1.8)
  

Удаление nokogiri (1.10.2-x64-mingw32) из файла блокировки приводит к различным ошибкам.

Вот мой Gemfile:

 source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.3'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.2', '>= 5.2.2.1'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'duktape'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
end

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  # Easy installation and use of chromedriver to run system tests with Chrome
  gem 'chromedriver-helper'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
  

И файл блокировки:

 GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.2.2.1)
      actionpack (= 5.2.2.1)
      nio4r (~> 2.0)
      websocket-driver (>= 0.6.1)
    actionmailer (5.2.2.1)
      actionpack (= 5.2.2.1)
      actionview (= 5.2.2.1)
      activejob (= 5.2.2.1)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 2.0)
    actionpack (5.2.2.1)
      actionview (= 5.2.2.1)
      activesupport (= 5.2.2.1)
      rack (~> 2.0)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionview (5.2.2.1)
      activesupport (= 5.2.2.1)
      builder (~> 3.1)
      erubi (~> 1.4)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.3)
    activejob (5.2.2.1)
      activesupport (= 5.2.2.1)
      globalid (>= 0.3.6)
    activemodel (5.2.2.1)
      activesupport (= 5.2.2.1)
    activerecord (5.2.2.1)
      activemodel (= 5.2.2.1)
      activesupport (= 5.2.2.1)
      arel (>= 9.0)
    activestorage (5.2.2.1)
      actionpack (= 5.2.2.1)
      activerecord (= 5.2.2.1)
      marcel (~> 0.3.1)
    activesupport (5.2.2.1)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 0.7, < 2)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    addressable (2.6.0)
      public_suffix (>= 2.0.2, < 4.0)
    archive-zip (0.12.0)
      io-like (~> 0.3.0)
    arel (9.0.0)
    bindex (0.5.0)
    bootsnap (1.4.2)
      msgpack (~> 1.0)
    builder (3.2.3)
    byebug (11.0.1)
    capybara (3.15.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (~> 1.8)
      rack (>= 1.6.0)
      rack-test (>= 0.6.3)
      regexp_parser (~> 1.2)
      xpath (~> 3.2)
    childprocess (0.9.0)
      ffi (~> 1.0, >= 1.0.11)
    chromedriver-helper (2.1.1)
      archive-zip (~> 0.10)
      nokogiri (~> 1.8)
    coffee-rails (4.2.2)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0)
    coffee-script (2.4.1)
      coffee-script-source
      execjs
    coffee-script-source (1.12.2)
    concurrent-ruby (1.1.5)
    crass (1.0.4)
    duktape (2.0.1.0)
    erubi (1.8.0)
    execjs (2.7.0)
    ffi (1.10.0-x64-mingw32)
    globalid (0.4.2)
      activesupport (>= 4.2.0)
    i18n (1.6.0)
      concurrent-ruby (~> 1.0)
    io-like (0.3.0)
    jbuilder (2.8.0)
      activesupport (>= 4.2.0)
      multi_json (>= 1.2)
    loofah (2.2.3)
      crass (~> 1.0.2)
      nokogiri (>= 1.5.9)
    mail (2.7.1)
      mini_mime (>= 0.1.1)
    marcel (0.3.3)
      mimemagic (~> 0.3.2)
    method_source (0.9.2)
    mimemagic (0.3.3)
    mini_mime (1.0.1)
    mini_portile2 (2.4.0)
    minitest (5.11.3)
    msgpack (1.2.9-x64-mingw32)
    multi_json (1.13.1)
    mysql2 (0.5.2-x64-mingw32)
    nio4r (2.3.1)
    nokogiri (1.10.2-x64-mingw32)
      mini_portile2 (~> 2.4.0)
    public_suffix (3.0.3)
    puma (3.12.1)
    rack (2.0.6)
    rack-test (1.1.0)
      rack (>= 1.0, < 3)
    rails (5.2.2.1)
      actioncable (= 5.2.2.1)
      actionmailer (= 5.2.2.1)
      actionpack (= 5.2.2.1)
      actionview (= 5.2.2.1)
      activejob (= 5.2.2.1)
      activemodel (= 5.2.2.1)
      activerecord (= 5.2.2.1)
      activestorage (= 5.2.2.1)
      activesupport (= 5.2.2.1)
      bundler (>= 1.3.0)
      railties (= 5.2.2.1)
      sprockets-rails (>= 2.0.0)
    rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    rails-html-sanitizer (1.0.4)
      loofah (~> 2.2, >= 2.2.2)
    railties (5.2.2.1)
      actionpack (= 5.2.2.1)
      activesupport (= 5.2.2.1)
      method_source
      rake (>= 0.8.7)
      thor (>= 0.19.0, < 2.0)
    rake (12.3.2)
    rb-fsevent (0.10.3)
    rb-inotify (0.10.0)
      ffi (~> 1.0)
    regexp_parser (1.3.0)
    rubyzip (1.2.2)
    sass (3.7.3)
      sass-listen (~> 4.0.0)
    sass-listen (4.0.0)
      rb-fsevent (~> 0.9, >= 0.9.4)
      rb-inotify (~> 0.9, >= 0.9.7)
    sass-rails (5.0.7)
      railties (>= 4.0.0, < 6)
      sass (~> 3.1)
      sprockets (>= 2.8, < 4.0)
      sprockets-rails (>= 2.0, < 4.0)
      tilt (>= 1.1, < 3)
    selenium-webdriver (3.141.0)
      childprocess (~> 0.5)
      rubyzip (~> 1.2, >= 1.2.2)
    sprockets (3.7.2)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-rails (3.2.1)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    thor (0.20.3)
    thread_safe (0.3.6)
    tilt (2.0.9)
    turbolinks (5.2.0)
      turbolinks-source (~> 5.2)
    turbolinks-source (5.2.0)
    tzinfo (1.2.5)
      thread_safe (~> 0.1)
    tzinfo-data (1.2019.1)
      tzinfo (>= 1.0.0)
    uglifier (4.1.20)
      execjs (>= 0.3.0, < 3)
    web-console (3.7.0)
      actionview (>= 5.0)
      activemodel (>= 5.0)
      bindex (>= 0.4.0)
      railties (>= 5.0)
    websocket-driver (0.7.0)
      websocket-extensions (>= 0.1.0)
    websocket-extensions (0.1.3)
    xpath (3.2.0)
      nokogiri (~> 1.8)

PLATFORMS
  x64-mingw32

DEPENDENCIES
  bootsnap (>= 1.1.0)
  byebug
  capybara (>= 2.15)
  chromedriver-helper
  coffee-rails (~> 4.2)
  duktape
  jbuilder (~> 2.5)
  mysql2 (>= 0.4.4, < 0.6.0)
  puma (~> 3.11)
  rails (~> 5.2.2, >= 5.2.2.1)
  sass-rails (~> 5.0)
  selenium-webdriver
  turbolinks (~> 5)
  tzinfo-data
  uglifier (>= 1.3.0)
  web-console (>= 3.3.0)

RUBY VERSION
   ruby 2.5.3p105

BUNDLED WITH
   1.17.3
  

Комментарии:

1. У меня есть, да. Это ничего не изменило. Он сгенерировал тот же файл блокировки с теми же версиями.

2. Очень странно, что это не удается, поскольку 1.10.2 соответствует спецификации "~> 1.8"

3. Я полностью удалил файл блокировки, чтобы позволить ему регенерировать внутри контейнера docker. и теперь я получаю новую ошибку, смотрите Обновление к моему сообщению

4. Это что-то совершенно другое, о чем я ничего не знаю bootsnap . Если этот вопрос будет решен, я бы рекомендовал опубликовать новый с этой проблемой. Также, вероятно, удаляю эту, поскольку я не уверен, насколько она полезна на данный момент.

5. Кстати, столкнулся с этой точной проблемой, с той же версией и всем остальным. Убедитесь, что в вашем сценарии развертывания также запущена установка пакета. У меня были задачи bundler, прокомментированные нами в моем файле Capfile