在 Ruby 中安全地需要 gem
Posted
技术标签:
【中文标题】在 Ruby 中安全地需要 gem【英文标题】:Safely require gems in Ruby 【发布时间】:2011-11-10 14:08:31 【问题描述】:有没有办法安全地要求红宝石宝石,以免在找不到宝石时引发异常?
我正在寻找接近此的解决方案:
if require 'hirb'
# do some hirb related stuff
else
# do other stuff
end
我希望这样可以确保没有不必要的 gem 导致我的部署失败。
【问题讨论】:
Ruby 应该有一个kind_of_want
命令,用于当你不真正 require
某事时。
def would_like(gemname, &block); begin; require gemname; yield; rescue LoadError; puts "Could not load #gemname"; end; end
:D
【参考方案1】:
大概是这样的:
begin
require 'hirb'
rescue LoadError => e
puts "could not find hirb"
end
【讨论】:
【参考方案2】:最好的方法是使用 bundler,这样你就可以确定你的 gems 真的会被安装。
【讨论】:
Bundler 对它的作用有好处,但它对我想要做这个检查的地方没有帮助。 好的,我会使用 Kernel.gem 然后加载一个 gem,并确保它是一个 gem 而不是其他文件。以上是关于在 Ruby 中安全地需要 gem的主要内容,如果未能解决你的问题,请参考以下文章
运行 Ruby 命令时,PATH 中不安全的世界可写目录 /Users/username,模式 040777
在 Alfred 工作流中运行的 Ruby 脚本中包含 Gem