我需要从Rails 3.0.4应用程序中的'Errno::ENOENT‘中拯救出来。我目前有以下代码的控制器:
begin
`lame #{parameters}`
rescue Errno::ENOENT
logger.info "command 'lame' not found: ensure LAME is installed"
end但是,日志代码从未被调用,但是日志显示:
脚本/rails:没有这样的文件或目录.
如果我用相同的片段创建了一个红宝石脚本,那么异常就会被拯救。
发布于 2011-02-20 08:17:32
在Ruby1.8中,Errno::ENOENT不是由shell执行/回拨引发的--您看到的错误是由shell打印的标准错误。如果您想检测到这一点,我建议您查找127的退出代码:
`lame #{parameters} 2>&1`
if $?.exitstatus == 127
logger.info "command 'lame' not found: ensure LAME is installed"
end然而,这将提高Ruby1.9中的Errno::ENOENT。
您可以考虑检查which lame的输出,而不是:
lame_installed = system("which lame >/dev/null")
# or even better
lame_available = !(lame_path = `which lame`.strip).empty? && File.executable?(lame_path)进一步读:
https://stackoverflow.com/questions/5055902
复制相似问题