gem使用的声音文件的位置

时间:2016-07-28 08:20:30

标签: ruby-on-rails ruby audio

我正在修补轨道上的红宝石的宝石,根据可执行文件我想从波形文件中播放声音,但它看起来不像我想的那样工作,安装了宝石...... 到目前为止我已经

cmd = ("afplay 'sound/activated.wav'")
exec cmd

文件位于我的gem文件夹中的lib / sound / activate.wav,但如果我使用我的gem它找不到文件... 是否有特定的位置我必须存储文件? 感谢

1 个答案:

答案 0 :(得分:0)

如果你运行它,afplay将从当前目录而不是gem目录中查看sound/activated.wav

在Ruby 2.x中,您可以在__dir__中找到脚本所在的目录。所以(采取了所有预防措施):

require 'shellwords'
file = File.join(__dir__, 'sound', 'activated.wav')
escfile = Shellwords.escape(file)
cmd = "afplay #{escfile}"

如果您需要使其与较旧的Rubies兼容,File.dirname(File.realpath(__FILE__))__dir__相同。

请注意,exec将使用新的ruby进程替换您的afplay进程,这显然会终止您的Ruby代码。在大多数情况下,您宁愿需要system