Неинициализированная константа MyClass :: Воспроизведение - PullRequest
0 голосов
/ 31 декабря 2010

Я пытаюсь использовать 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|

Ответы [ 4 ]

2 голосов
/ 31 декабря 2010

Вкратце, похоже, что ваш Gemfile должен быть:

gem 'ruby-alsa', :require => 'alsa'
1 голос
/ 31 декабря 2010

Ваш код находится внутри класса, поэтому вам нужно сделать это:

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

Обратите внимание на предыдущее двойное двоеточие.

1 голос
/ 31 декабря 2010

Вы пытались это потребовать?

require 'ruby-alsa'

edit:

Попробуйте сначала запросить рубины

require 'rubygems'
require 'ruby-alsa'
1 голос
/ 31 декабря 2010

Выглядит так, как будто ваш закомментированный код правильный;вы должны использовать ALSA::PCM::Playback.

Ваша следующая проблема заключается в том, что write является методом экземпляра этого класса.Как показано на странице, на которую вы ссылаетесь, кажется, что правильное использование может быть больше похоже на:

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

(Предостережение: я ничего не знаю об ALSA или этом драгоценном камне, поэтому я понятия не имею, чтовыше должен сделать.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...