如何从Ruby脚本初始化Rails 5.1环境用于Clockwork及问题排查
解决Clockwork初始化Rails时OpenSSL重复加载的错误
看起来你遇到的问题根源是第三方openssl gem与Ruby内置的OpenSSL库冲突了。从你的本地gem列表可以看到,你同时安装了第三方的openssl (2.0.5)和Ruby默认的openssl (2.0.3),这会导致加载时重复定义OpenSSL相关类,最终触发superclass mismatch for class Cipher错误。
解决步骤:
卸载第三方openssl gem
在终端运行以下命令,选择卸载非默认的2.0.5版本:gem uninstall openssl终端会提示你选择要卸载的版本,输入对应
2.0.5的编号即可。检查Gemfile并清理依赖
确认你的Gemfile里没有手动添加gem 'openssl'(如果有的话,删掉这一行),然后运行:bundle install确保项目依赖中不再包含第三方openssl gem。
重新运行你的Clockwork脚本
现在再执行你的my-file.rb,应该不会再出现OpenSSL重复加载的警告和错误了。
为什么会出现这个问题?
Ruby本身已经内置了OpenSSL库,第三方的openssl gem通常是为了提供特定版本的补丁或特性,但在Rails 5.1 + Ruby 2.4.1的环境下,这个第三方gem会和Rails依赖的内置OpenSSL库产生冲突,导致同一类被两次定义,最终抛出类型错误。你的初始化脚本顺序是正确的(先加载config/boot再加载config/environment),问题本质是gem依赖冲突。
内容的提问来源于stack exchange,提问作者JamesPlayer
相关产品推荐
相关产品推荐

