当我的脚本中断时,如何让shell/ruby发出噪音(使我的计算机发出嘟嘟声或播放声音/曲目)?

当我的脚本中断时,如何让shell/ruby发出噪音(使我的计算机发出嘟嘟声或播放声音/曲目)?,ruby,shell,audio,scripting,error-handling,Ruby,Shell,Audio,Scripting,Error Handling,我正在运行一个测试脚本,它在一个网站上反复运行,在几个小时内运行数百次。我想让ruby开始播放一首响亮的歌曲/mp3,例如,当我在我相当小的公寓的另一个地方时提醒我。如果你想在异常后播放一些音乐,只需将你的语句包装在begin rescue块中,当你发现异常时,运行类似这样的操作(on*nix): 或者,如果您在windows上: require 'win32ole' player = WIN32OLE.new('WMPlayer.OCX') player.OpenPlayer(file) 所

我正在运行一个测试脚本,它在一个网站上反复运行,在几个小时内运行数百次。我想让ruby开始播放一首响亮的歌曲/mp3,例如,当我在我相当小的公寓的另一个地方时提醒我。

如果你想在异常后播放一些音乐,只需将你的语句包装在
begin rescue
块中,当你发现异常时,运行类似这样的操作(on*nix):

或者,如果您在windows上:

require 'win32ole'
player = WIN32OLE.new('WMPlayer.OCX')
player.OpenPlayer(file)
所以它应该看起来像

def methodThatFails  
  begin  
    # Your code here 
  rescue  
    pid = fork{ exec 'mpg123','-q', 'nevergonnagiveyouup.mp3' }
  end  
end  

对于windows用户:使用gem win32声音,不支持mp3,但支持.wav

# gem install win32-sound

require 'win32/sound'
include Win32

Sound.play("SystemAsterisk", Sound::ALIAS) # play system asterisk sound
Sound.beep(600,200) # play a beep 600 hertz for 200 milliseconds
Sound.play("trompet.wav") # play a file from disk

我已经为所有Mac OSX用户找到了解决方案。这篇博文的作者:向我展示:

Mac终端有一个名为say的命令<代码>说功能完全符合人们的期望:

say "I'm done master"
从候机楼开始

在ruby脚本内部(在我的例子中),这很容易实现

`say "I'm done master"`
工作起来很有魅力

好吧,我宁愿默认为女性配音,但这太棒了

要切换语音,请转到系统首选项>听写和语音>文本到语音>系统语音

维姬可能是听上去最好的女声

编辑:哦,是的,我想让电脑在崩溃时发出噪音。要在ruby中实现这一点:

def go(x)
  begin# starts rescue block
    puts "5/#{x} = #{5/x}"
  rescue
    `say "something is wrong, master."`
  end
end

go(0)
#=> ...

mac上还有
afplay
程序,因此可以执行以下操作:

sleep 180 # sleep 3 minutes
`afplay my_song.mp3`
当Ruby代码出现异常时,可以使用gem播放mp3警报文件

require 'exception_alarm'

alarm do
  # your code...
  raise 'play alarm sound'
end
放入“\a”


如果您正在开发一个命令行应用程序,并且需要一个简单的终端提示,请使用以下纯ruby,无库,仅使用ansi转义代码。应该在本机终端上工作(与ansi兼容,如mac终端gnome/kde终端、term2、ssh会话、tmux等。不确定windows终端是否支持此功能,因为这是一个众所周知的ansi序列。它听起来就像在输入开始时按DELETE或DOWN箭头。希望它能帮到你。

你选择的操作系统或音乐播放器是什么?在MacOS上:播放/系统/库/声音/Fok.AIFF < /代码>更多:使用<代码> -V.<代码>查看声音列表。用“代码> > -V菲奥娜”指定它们。让我们这样做“”。参见“代码> >人说< /C> >的更多选项。
require 'exception_alarm'

alarm do
  # your code...
  raise 'play alarm sound'
end