Rails: обработка разных версий гемов - PullRequest
0 голосов
/ 18 октября 2018

У меня установлено приложение rails 5.2 с rvm:

=> ruby-2.4.2 [ x86_64 ]
 * ruby-2.4.4 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Я хочу добавить возможность автоматического создания резервной копии базы данных, поэтому установил гем backup.Я понимаю, что это не должно быть добавлено к GemFile из-за того, что некоторые его зависимости относительно стары, поэтому я использовал команду gem install backup-v5.0.0.beta2

Когда я запускаю gem list, есть несколько драгоценных камнейс двумя номерами версий, например, open4 (1.3.4, 1.3.0)

У меня возникают проблемы при попытке вручную запустить процедуру резервного копирования через backup perform -t db_backup --config-file /Users/<path_to_my_rails_project>/config/Backup/config.rb, что приводит к ошибке:

[error] CLI::Error
[error] --- Wrapped Exception ---
[error] Gem::LoadError: You have already activated open4 1.3.0, but your Gemfile requires open4 1.3.4. Prepending `bundle exec` to your command may solve this.

Поверните в сообщении об ошибке, bundle exec backup perform -t db_backup --config-file /Users/<path_to_my_rails_project>/config/Backup/config.rb выдает ошибку:

/Users/<my_username>/.rvm/gems/ruby-2.4.2/gems/bundler-1.16.6/lib/bundler/rubygems_integration.rb:462:in `block in replace_bin_path': can't find executable backup for gem backup. backup is not currently included in the bundle, perhaps you meant to add it to your Gemfile? (Gem::Exception)

Не могли бы вы посоветовать, как мне установить гем backup и запустить задачу без ошибок из-за различных ошибок?устанавливаются версии того же самого драгоценного камня

1 Ответ

0 голосов
/ 19 октября 2018

Убедитесь, что у вас нет версии, заблокировавшей драгоценный камень следующим образом: gem open4, '~> 1.3.4'

Попробуйте bundle update open4 backup.Я бы тоже попробовал последнюю версию самоцвета.

Другой вариант - отказаться от этого самоцвета и попробовать https://github.com/javan/whenever и просто запустить простой pg_dump, или не использовать какие-либо самоцветы и добавитьЗадание cron, которое создает pg_dump с отметкой времени в имени файла.

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

...