bou*_*uby 3 ruby audio error-handling shell scripting
我正在运行一个测试脚本,它在一个网站上一遍又一遍地运行,在几个小时的过程中运行了数百次.我想让红宝石开始播放一首响亮的歌曲/ mp3,以便在我在我相当小的公寓的另一部分时提醒我.
我找到了所有Mac OSX用户的解决方案.此博客文章的致谢:http://www.mitchchn.me/2014/os-x-terminal/向我展示:
Mac终端有一个叫做的命令say.say函数完全像人们希望的那样:
say "I'm done master"
Run Code Online (Sandbox Code Playgroud)
从终端做到这一点.
在ruby脚本里面(在我的例子中)这很容易实现.
`say "I'm done master"`
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.
好的,默认情况下我宁愿是女声,但这很棒.
要切换语音,请转到系统偏好设置>听写和语音>文本到语音>系统语音
薇薇可能是最好听的女声
编辑:哦,是的,我希望计算机在崩溃时发出噪音.要在ruby中做到这一点:
def go(x)
begin# starts rescue block
puts "5/#{x} = #{5/x}"
rescue
`say "something is wrong, master."`
end
end
go(0)
#=> ...
Run Code Online (Sandbox Code Playgroud)
如果您想在异常后播放一些音乐,只需将您的语句包装在一个begin rescue块中,当您捕获异常时,运行如下所示的代码(在 *nix 上):
pid = fork{ exec 'mpg123','-q', file }
Run Code Online (Sandbox Code Playgroud)
或者如果你在 Windows 上:
require 'win32ole'
player = WIN32OLE.new('WMPlayer.OCX')
player.OpenPlayer(file)
Run Code Online (Sandbox Code Playgroud)
所以它应该看起来像
def methodThatFails
begin
# Your code here
rescue
pid = fork{ exec 'mpg123','-q', 'nevergonnagiveyouup.mp3' }
end
end
Run Code Online (Sandbox Code Playgroud)
同样在mac上有afplay程序,所以可以这样做:
sleep 180 # sleep 3 minutes
`afplay my_song.mp3`
Run Code Online (Sandbox Code Playgroud)