【问题标题】:Uninitialized Constant MyClass::Playback未初始化的常量 MyClass::Playback
【发布时间】:2010-12-31 14:14:17
【问题描述】:

我正在尝试使用ruby-alsa gem 在服务器上提供音频播放。不幸的是,我在尝试这样做时不断收到未初始化的常量 MyClass::Playback 异常。

我对 Ruby 和 Rails 很陌生,所以我不确定如何解决这个问题。以下内容已添加到我的 Gemfile 中,并且我已经运行了捆绑安装:

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|

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    简单看一下,您的 Gemfile 似乎需要:

    gem 'ruby-alsa', :require => 'alsa'
    

    【讨论】:

      【解决方案2】:

      看起来您注释掉的代码是正确的;你应该使用ALSA::PCM::Playback

      您的下一个问题是write 是该类的实例方法。如您链接到的页面所示,正确的用法可能更像是:

      ALSA::PCM::Playback.open do |playback|
        playback.write do |length|
          file.read length
        end
      end
      

      (警告:我对 ALSA 或这个 gem 一无所知,所以我不知道上面应该做什么。)

      【讨论】:

      • 对不起,我应该提到我评论了那条线,因为它也不起作用。在 ALSA::PCM:Playback 行未注释的情况下,它会引发相同的异常:未初始化的常量 MyClass::ALSA
      • 在这种情况下,::ALSA::PCM::Playback 强制执行顶级分辨率,但我认为这确实表明 alsa 代码没有被正确要求。
      【解决方案3】:

      您的代码在一个类中,因此您需要这样做:

      ::ALSA::PCM::Playback.open do |playback|
      

      注意前面的双冒号。

      【讨论】:

        【解决方案4】:

        您是否尝试过要求它?

        require 'ruby-alsa'
        

        编辑:

        尝试首先要求 ruby​​gems

        require 'rubygems'
        require 'ruby-alsa'
        

        【讨论】:

        • 我做了......不幸的是,我得到“没有这样的文件要加载——ruby-alsa”。
        • 我真的认为这是我的问题。我从我的项目根目录中运行了“find . -name alsa -print”,但没有找到任何东西。我是否需要在项目的某处包含源代码? 编辑:抱歉,我将我的 alsa 文本格式化为斜体,但它被星号包围以进行通配符搜索。
        • @senfo 天哪,如果您无法加载ruby-alsa,那当然是问题所在。如果您将其包含在问题描述中会很有帮助。
        • @Phrogz 刚接触 Ruby,我什至不确定这是否有必要。更新我的 Gemfile 后,事实证明是这种情况(没有必要)。
        猜你喜欢
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多