我正在修补轨道上的红宝石的宝石,根据可执行文件我想从波形文件中播放声音,但它看起来不像我想的那样工作,安装了宝石...... 到目前为止我已经
了cmd = ("afplay 'sound/activated.wav'")
exec cmd
文件位于我的gem文件夹中的lib / sound / activate.wav,但如果我使用我的gem它找不到文件... 是否有特定的位置我必须存储文件? 感谢
答案 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
。