Kev*_*tre 6 ruby ruby-on-rails
我需要在Ruby on Rails 3.0.4应用程序中拯救'Errno :: ENOENT'.我目前有控制器,代码如下:
begin
`lame #{parameters}`
rescue Errno::ENOENT
logger.info "command 'lame' not found: ensure LAME is installed"
end
Run Code Online (Sandbox Code Playgroud)
但是,永远不会调用日志代码,但日志显示:
script/rails:没有这样的文件或目录 - 跛脚......
如果我使用相同的代码片段创建ruby脚本,则会获得异常.
在Ruby 1.8中,Errno::ENOENT不是由shell执行/反向标记引发的 - 您看到的错误是由shell打印的标准错误.如果你想检测这个,我建议你找一个127的退出代码:
`lame #{parameters} 2>&1`
if $?.exitstatus == 127
logger.info "command 'lame' not found: ensure LAME is installed"
end
Run Code Online (Sandbox Code Playgroud)
但是,这将Errno::ENOENT在Ruby 1.9中引发.
您可以考虑which lame改为检查输出:
lame_installed = system("which lame >/dev/null")
# or even better
lame_available = !(lame_path = `which lame`.strip).empty? && File.executable?(lame_path)
Run Code Online (Sandbox Code Playgroud)
进一步阅读:
| 归档时间: |
|
| 查看次数: |
17748 次 |
| 最近记录: |