首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails拯救“Errno::ENOENT”

Rails拯救“Errno::ENOENT”
EN

Stack Overflow用户
提问于 2011-02-20 07:53:48
回答 1查看 19.7K关注 0票数 7

我需要从Rails 3.0.4应用程序中的'Errno::ENOENT‘中拯救出来。我目前有以下代码的控制器:

代码语言:javascript
复制
begin
  `lame #{parameters}`
rescue Errno::ENOENT
  logger.info "command 'lame' not found: ensure LAME is installed"
end

但是,日志代码从未被调用,但是日志显示:

脚本/rails:没有这样的文件或目录.

如果我用相同的片段创建了一个红宝石脚本,那么异常就会被拯救。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-20 08:17:32

在Ruby1.8中,Errno::ENOENT不是由shell执行/回拨引发的--您看到的错误是由shell打印的标准错误。如果您想检测到这一点,我建议您查找127的退出代码:

代码语言:javascript
复制
`lame #{parameters} 2>&1`
if $?.exitstatus == 127
  logger.info "command 'lame' not found: ensure LAME is installed"
end

然而,这将提高Ruby1.9中的Errno::ENOENT

您可以考虑检查which lame的输出,而不是:

代码语言:javascript
复制
lame_installed = system("which lame >/dev/null")
# or even better
lame_available = !(lame_path = `which lame`.strip).empty? && File.executable?(lame_path)

进一步读:

  • http://www.faqs.org/docs/abs/HTML/exitcodes.html
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5055902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档