我正在尝试使用ruby-alsa gem在服务器上提供音频播放功能。不幸的是,在尝试这样做时,我一直得到一个未初始化的常量MyClass :: Playback异常。
我对Ruby和Rails很新,所以我不确定如何解决这个问题。以下内容已添加到我的Gemfile中,并且我已经运行了一个bundle install:
gem 'ruby-alsa'
我的控制器代码看起来像这样(虽然我甚至无法保证代码的有效性):
# Test audio playback
file = File.open("sample.wav")
#ALSA::PCM::Playback.open do |playback| # This line is commented out because it didn't work
Playback.open do |playback|
playback.write do |length|
file.read length
end
end
file.close
更新:如果我取消注释以下行,我会得到相同的异常(除了ALSA是未初始化的常量):
ALSA::PCM::Playback.open do |playback|
答案 0 :(得分:2)
简要地看一下,看起来你的Gemfile需要是:
gem 'ruby-alsa', :require => 'alsa'
答案 1 :(得分:1)
看起来您的注释掉的代码是正确的;你应该使用ALSA::PCM::Playback
。
您的下一个问题是write
是该类的实例方法。如您链接到的页面所示,正确的用法可能更像是:
ALSA::PCM::Playback.open do |playback|
playback.write do |length|
file.read length
end
end
(警告:我对ALSA或这个宝石一无所知,所以我不知道上面应该怎么做。)
答案 2 :(得分:1)
您是否尝试过要求?
require 'ruby-alsa'
编辑:
首先尝试要求rubygems
require 'rubygems'
require 'ruby-alsa'
答案 3 :(得分:1)
您的代码在一个类中,因此您需要执行此操作:
::ALSA::PCM::Playback.open do |playback|
注意前面的双冒号。