我有一个安装了0
的Rails 5.2应用程序:
int
我想增加对数据库进行自动备份的功能,因此安装了rvm
gem。我知道不应将其添加到=> ruby-2.4.2 [ x86_64 ]
* ruby-2.4.4 [ x86_64 ]
# => - current
# =* - current && default
# * - default
中,因为它的某些依赖项相对较旧,因此我使用了命令backup
当我运行GemFile
时,有许多gem具有两个版本号,例如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
gem和运行任务,而不会由于安装了同一gem的版本不同而出现错误
答案 0 :(得分:0)
确保您尚未通过版本锁定宝石,例如:gem open4, '~> 1.3.4'
尝试bundle update open4 backup
。我也会尝试使用最新版的gem。
另一种选择是抛弃这个gem并尝试https://github.com/javan/whenever并运行一个简单的pg_dump
,或者不使用任何gem并添加一个cron作业,该作业将创建一个pg_dump并在文件名中带有时间戳。 / p>
这些问题很难调试,但是我的方法通常是开始删除gems,然后让bundler自己找出其依赖关系树。您在Gemfile中定义的次数越多,捆绑程序发生版本不匹配的机会就越大,从而引发类似于您所看到的错误。