当我的脚本断开时,如何让shell/ruby​​发出噪音(让我的电脑发出哔哔声或播放声音/音轨)?

bou*_*uby 3 ruby audio error-handling shell scripting

我正在运行一个测试脚本,它在一个网站上一遍又一遍地运行,在几个小时的过程中运行了数百次.我想让红宝石开始播放一首响亮的歌曲/ mp3,以便在我在我相当小的公寓的另一部分时提醒我.

bou*_*uby 8

我找到了所有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)

  • 使用`say -v?`查看语音列表.指定它们,例如`say -v Fiona"让我们这样做"`.查看更多选项`man say`. (2认同)

sun*_*eja 5

如果您想在异常后播放一些音乐,只需将您的语句包装在一个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)


Pur*_*ket 5

同样在mac上有afplay程序,所以可以这样做:

sleep 180 # sleep 3 minutes
`afplay my_song.mp3`
Run Code Online (Sandbox Code Playgroud)