未初始化的常量MyClass ::播放

时间:2010-12-31 14:14:18

标签: ruby-on-rails ruby

我正在尝试使用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|

4 个答案:

答案 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|

注意前面的双冒号。