Ruby脚本引入Pry报LoadError,rbenv环境下求排查方案
解决Ruby控制台脚本加载Pry的LoadError问题
这问题我之前在写独立Ruby脚本时也碰到过——核心原因是普通Ruby脚本不会像Rails那样自动加载Bundler管理的gem环境,Rails启动时已经集成了Bundler的加载逻辑,所以你之前在Rails里用Pry没出过问题。下面给你几个可行的解决办法:
方法1:用bundle exec运行脚本
这是最直接的解决方案,让Bundler帮你接管gem的加载环境,确保脚本使用Gemfile里指定的Pry版本:
bundle exec ruby calculator/rpn_calculator_service.rb
运行时Bundler会自动读取Gemfile的配置,加载对应版本的Pry,就不会出现找不到文件的错误了。
方法2:在脚本开头手动引入Bundler
如果不想每次都敲bundle exec,可以在脚本的最顶部添加一段代码,让脚本自己加载Bundler环境:
# 脚本最顶部添加 require 'bundler/setup' Bundler.require(:development) # 按需指定环境,比如同时加载test环境就写:development,:test # 然后再写你的调试代码 require 'pry'; binding.pry
这样脚本运行时会先加载Gemfile里对应环境的所有gem,自然就能找到Pry了。
方法3:排查gem安装状态(兜底检查)
如果上面两种方法都不管用,可以先确认Pry是否真的安装到了当前rbenv环境里:
rbenv exec gem list pry
如果输出里没有pry (0.10.x)的记录,说明gem没安装成功,回到Gemfile所在目录执行:
bundle install
另外别忘了确认当前rbenv使用的是2.3.1版本:
rbenv version
如果不是,用rbenv local 2.3.1切换到指定版本后再重新安装gem。
内容的提问来源于stack exchange,提问作者gangelo
相关产品推荐
相关产品推荐

