Проблема с Rails 3 и AMF, rails3-amf, RocketAMF - PullRequest
2 голосов
/ 23 ноября 2010

я пытаюсь заставить AMF работать с Rails3. Я успешно установил камень rails3-amf-0.1.0 и камень RocketAMF-0.2.1.

В моем приложении есть контроллер со следующим кодом:

def getRandomCards
  @incoming = params[0]
  @cards = Cardvo.first
  respond_with(@cards) do |format|
      format.amf { render :amf => @cards.to_amf}  
  end
end

через вызов из Actionscript, я хотел бы вернуть некоторые данные в формате amf.

еще больше, как указано в инструкции для rails3-amf, я сделал следующее. в моем production.rb под config / environment я добавил строку

config.rails3amf.map_params :controller => 'CardvosController', :action => 'getRandomCards'

мой шлюз amf получил

config.rails3amf.gateway_path = "/gateway"

Проблема:

Любой вызов из Actionscript / Flash вызывает следующее (взято из журнала)

Started POST "/gateway" for 192.178.168.1 at Fri Nov 19 15:13:28 +0100 2010
  Processing by CardvosController#getRandomCards as AMF
  Parameters: {0=>100.0}
  [1m[36mSQL (0.4ms)[0m  [1mSHOW TABLES[0m
  [1m[35mCardvo Load (0.2ms)[0m  SELECT `cardvos`.* FROM `cardvos` LIMIT 1
Completed 200 OK in 13ms (Views: 0.9ms | ActiveRecord: 0.5ms)

NoMethodError (undefined method `constructed?' for #<RocketAMF::Envelope:0x39ba868>):

Файл Amf создан, но метод, находящийся в remoting.rb из RocketAMF, не найден. Я думаю, что ошибка выдается в request_parser.rb из Rails3AMF с просьбой о создании?

  # Wrap request and response
  env['rack.input'].rewind
  env['rails3amf.request'] = RocketAMF::Envelope.new.populate_from_stream(env['rack.input'].read)
  env['rails3amf.response'] = RocketAMF::Envelope.new

  # Pass up the chain to the request processor, or whatever is layered in between
  result = @app.call(env)

  # Calculate length and return response
  if env['rails3amf.response'].constructed?

Мне кажется, что он смотрит на класс wron для метода. куда NoMethodError (неопределенный метод `построенный? 'Для #RocketAMF :: Envelope: 0x39ba868):

необходимая часть RocketAMF :: Конверт: 0x39ba868 который должен быть RocketAMF: ANOTHER_CLASS: Конверт: 0x39ba868

Прав ли я и где, черт возьми, ошибка? Любая помощь будет оценена!

1028 * Крис *

...