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

时间:2012-10-13 22:04:59

标签: ruby shell audio scripting error-handling

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

6 个答案:

答案 0 :(得分:8)

我找到了所有Mac OSX用户的解决方案。此博客文章的致谢:http://www.mitchchn.me/2014/os-x-terminal/向我展示:

Mac终端有一个名为say的命令。 say函数完全像人们希望的那样:

say "I'm done master"

从终端做到了。

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

`say "I'm done master"`

就像一个魅力。

好吧,默认情况下,我认为它是女性的声音,但这很棒。

要切换语音,请转到“系统偏好设置”>听写和演讲>文字转语音>系统语音

Vicki可能是最好听的女声

编辑:哦,是的,我希望计算机在崩溃时发出噪音。要在ruby中做到这一点:

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

go(0)
#=> ...

答案 1 :(得分:5)

同样在Mac上有afplay程序,因此可以执行以下操作:

sleep 180 # sleep 3 minutes
`afplay my_song.mp3`

答案 2 :(得分:4)

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

pid = fork{ exec 'mpg123','-q', file }

或者如果你在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  

答案 3 :(得分:2)

对于Windows用户:使用gem win32-sound,没有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

答案 4 :(得分:1)

puts "\a"

如果您正在开发命令行应用程序,并且需要简单的终端提示音,请使用以下纯ruby,没有库,仅使用ansi转义代码。应该可以在本机终端上运行(与ansi兼容,例如mac终端gnome / kde终端,term2,ssh会话,tmux等。不确定Windows终端-应该支持,因为这是众所周知的ansi序列。听起来就像什么时候您在输入的开头按DELETE或DOWN箭头。希望对您有帮助

答案 5 :(得分:0)

当您的Ruby代码出现异常时,您可以使用gem exception_alarm播放mp3警报文件。

require 'exception_alarm'

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