Rails 5 - LoadError: Ошибка загрузки адаптера Active Record 'mysql2'. mysql2 не является частью пакета - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть долговременное стабильное приложение Rails 5.1, развернутое в Ubuntu 18.04.3 с использованием MySQL.

Я пришел вчера, чтобы развернуть мирское обновление, и по какой-то причине я начал получать ошибку,

LoadError: Ошибка загрузки адаптера Active Record «mysql2». Отсутствует драгоценный камень, это зависит от? mysql2 не является частью пакета. Добавьте его в свой Gemfile.

Конечно, гем уже находится в моем Gemfile (и Gemfile.lock) и установлен на машине для развертывания. Я сделал некоторые несвязанные изменения Gemfile (переключился на mini_racer и добавил bcrypt), что потребовало от меня обновления до Bundler 2.0.2 по сравнению с 2.0.1, но это так.

Вещи, которые я пробовал:

  1. Я пытался вернуться к базе кода до того, как какие-либо гемы изменились, и переключился обратно на bundler 2.0.1, но я все еще сталкивался с той же проблемой при развертывании - теперь она не работает, кажется, чтооставаясь неработающим.

  2. Я попытался развернуть на полностью независимый сервер, который я настроил (все еще на Ubuntu 18.04), и теперь вижу ту же проблему.

  3. Я нашел эти очевидные дубликаты вопросов , и там было исправлено возвращение к более ранней версии самоцвета mysql2 (я пробовал 0.3.20, поскольку видел упоминание 0.3. 21 не работает), но это не исправляет это в моем случае. Я пытался удалить все остальные версии на стороне сервера.

  4. В комментариях к вышеупомянутому связанному вопросу говорится, что это будет исправлено в Rails 5 (я уже использовал 5.1), но я пошелобновив приложение Rails до 5.2, чтобы получить самые последние гемы, и указал mysql 0.5.2, чтобы посмотреть, смогу ли я перепрыгнуть версии mysql2 с проблемой, но все же я столкнулся с той же проблемой.

Мой «текущий» файл Gemfile.lock вставлен ниже, но эта проблема началась с Rails 5.1.7 и Bundler 2.0.1, и я попробовал все перестановки mysql2 0.3.18, 0.3.20и 0.5.2.

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

GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.2.3)
      actionpack (= 5.2.3)
      nio4r (~> 2.0)
      websocket-driver (>= 0.6.1)
    actionmailer (5.2.3)
      actionpack (= 5.2.3)
      actionview (= 5.2.3)
      activejob (= 5.2.3)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 2.0)
    actionpack (5.2.3)
      actionview (= 5.2.3)
      activesupport (= 5.2.3)
      rack (~> 2.0)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionview (5.2.3)
      activesupport (= 5.2.3)
      builder (~> 3.1)
      erubi (~> 1.4)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.3)
    activejob (5.2.3)
      activesupport (= 5.2.3)
      globalid (>= 0.3.6)
    activemodel (5.2.3)
      activesupport (= 5.2.3)
    activerecord (5.2.3)
      activemodel (= 5.2.3)
      activesupport (= 5.2.3)
      arel (>= 9.0)
    activestorage (5.2.3)
      actionpack (= 5.2.3)
      activerecord (= 5.2.3)
      marcel (~> 0.3.1)
    activesupport (5.2.3)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 0.7, < 2)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    addressable (2.7.0)
      public_suffix (>= 2.0.2, < 5.0)
    airbrussh (1.4.0)
      sshkit (>= 1.6.1, != 1.7.0)
    arel (9.0.0)
    autoprefixer-rails (9.7.1)
      execjs
    bcrypt (3.1.13)
    bindex (0.8.1)
    bootstrap-sass (3.3.7)
      autoprefixer-rails (>= 5.2.1)
      sass (>= 3.3.4)
    builder (3.2.3)
    byebug (11.0.1)
    capistrano (3.11.2)
      airbrussh (>= 1.0.0)
      i18n
      rake (>= 10.0.0)
      sshkit (>= 1.9.0)
    capistrano-bundler (1.6.0)
      capistrano (~> 3.1)
    capistrano-rails (1.4.0)
      capistrano (~> 3.1)
      capistrano-bundler (~> 1.1)
    capybara (2.18.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (>= 1.3.3)
      rack (>= 1.0.0)
      rack-test (>= 0.5.4)
      xpath (>= 2.0, < 4.0)
    childprocess (3.0.0)
    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.5)
    erubi (1.9.0)
    execjs (2.7.0)
    ffi (1.11.1)
    font-awesome-rails (4.7.0.5)
      railties (>= 3.2, < 6.1)
    globalid (0.4.2)
      activesupport (>= 4.2.0)
    httparty (0.17.1)
      mime-types (~> 3.0)
      multi_xml (>= 0.5.2)
    i18n (1.7.0)
      concurrent-ruby (~> 1.0)
    jbuilder (2.9.1)
      activesupport (>= 4.2.0)
    jquery-rails (4.3.5)
      rails-dom-testing (>= 1, < 3)
      railties (>= 4.2.0)
      thor (>= 0.14, < 2.0)
    libv8 (7.3.492.27.1)
    loofah (2.3.1)
      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)
    mime-types (3.3)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2019.1009)
    mimemagic (0.3.3)
    mini_mime (1.0.2)
    mini_portile2 (2.4.0)
    mini_racer (0.2.6)
      libv8 (>= 6.9.411)
    minitest (5.13.0)
    multi_xml (0.6.0)
    mysql2 (0.3.20)
    net-scp (2.0.0)
      net-ssh (>= 2.6.5, < 6.0.0)
    net-ssh (5.2.0)
    nio4r (2.5.2)
    nokogiri (1.10.5)
      mini_portile2 (~> 2.4.0)
    public_suffix (4.0.1)
    rack (2.0.7)
    rack-test (1.1.0)
      rack (>= 1.0, < 3)
    rails (5.2.3)
      actioncable (= 5.2.3)
      actionmailer (= 5.2.3)
      actionpack (= 5.2.3)
      actionview (= 5.2.3)
      activejob (= 5.2.3)
      activemodel (= 5.2.3)
      activerecord (= 5.2.3)
      activestorage (= 5.2.3)
      activesupport (= 5.2.3)
      bundler (>= 1.3.0)
      railties (= 5.2.3)
      sprockets-rails (>= 2.0.0)
    rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    rails-html-sanitizer (1.3.0)
      loofah (~> 2.3)
    railties (5.2.3)
      actionpack (= 5.2.3)
      activesupport (= 5.2.3)
      method_source
      rake (>= 0.8.7)
      thor (>= 0.19.0, < 2.0)
    rake (13.0.0)
    rb-fsevent (0.10.3)
    rb-inotify (0.10.0)
      ffi (~> 1.0)
    rubyzip (2.0.0)
    sass (3.7.4)
      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.1.0)
      railties (>= 5.2.0)
      sass (~> 3.1)
      sprockets (>= 2.8, < 4.0)
      sprockets-rails (>= 2.0, < 4.0)
      tilt (>= 1.1, < 3)
    selenium-webdriver (3.142.6)
      childprocess (>= 0.5, < 4.0)
      rubyzip (>= 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)
    sqlite3 (1.4.1)
    sshkit (1.20.0)
      net-scp (>= 1.1.2)
      net-ssh (>= 2.8.0)
    thor (0.20.3)
    thread_safe (0.3.6)
    tilt (2.0.10)
    turbolinks (5.2.1)
      turbolinks-source (~> 5.2)
    turbolinks-source (5.2.0)
    tzinfo (1.2.5)
      thread_safe (~> 0.1)
    uglifier (4.2.0)
      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.1)
      websocket-extensions (>= 0.1.0)
    websocket-extensions (0.1.4)
    will_paginate (3.2.1)
    xpath (3.2.0)
      nokogiri (~> 1.8)

PLATFORMS
  ruby

DEPENDENCIES
  bcrypt (~> 3.1.13)
  bootstrap-sass (~> 3.3.7)
  byebug
  capistrano-rails
  capybara (~> 2.13)
  coffee-rails (~> 4.2)
  font-awesome-rails
  httparty
  jbuilder (~> 2.5)
  jquery-rails
  mini_racer
  mysql2 (= 0.3.20)
  rails (~> 5.2)
  sass-rails (~> 5.0)
  selenium-webdriver
  sqlite3
  turbolinks (~> 5)
  uglifier (>= 1.3.0)
  web-console (>= 3.3.0)
  will_paginate

BUNDLED WITH
   2.0.2

1 Ответ

0 голосов
/ 12 ноября 2019

Частично проблема в том, что mysql2 не будет собираться в Ubuntu.

Оказалось, что при обновлении до пакета 2.0.2 в моем проекте Rails появился новый файл конфигурации,

.bundle/config

Который содержал,

BUNDLE_BUILD__MYSQL2: "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
BUNDLE_WITHOUT: "production"
BUNDLE_WITH: "development"

Конкретное объявление BUNDLE_BUILD__MYSQL2 выглядит странно, и получается, что сборка mysql2 на моих машинах с Ubuntu прерывается.

Чтобы это исправить, мне пришлось внести два изменения:

BUNDLE_WITHOUT: ""

... который снова начал включать гем mysql2 (не знаю почему).

Но это приводило к ошибке при сборке собственных расширений mysql2, так как заголовки / библиотеки openssl не могли бытьнайдено, что было исправлено, очистите значение,

BUNDLE_BUILD__MYSQL2: ""

Теперь я могу запустить Rails 5.2 с mysql2 (установленным с помощью Bundler 2.0.2)

Надеюсь, это поможет кому-то еще!

...