Диалплан Adhearsion не может получить доступ к моделям рельсов - PullRequest
0 голосов
/ 30 августа 2011

В моей диалплане adhearsion у меня есть следующий код, который вызывает немедленное отключение от вызова без какого-либо вывода в журнал или консоль:

the_flow = CallFlow.where(:dnis => dnis).first

CallFlow - это модель в моем приложении rails (графический интерфейс пользователя)/app/models/call_flow.rb), который находится в каталоге gui моего приложения adhearsion.В моем файле .ahnrc у меня есть:

paths:
  # All paths are relative to this file's directory
  init: config/startup.rb
  dialplan: dialplan.rb
  events: events.rb
  models: gui/app/models/*.rb

И это call_flow.rb:

class CallFlow < ActiveRecord::Base
  belongs_to :routable, :polymorphic => true

  def dialplan
    puts self.routable.description.squeeze("\n").strip
  end

  def target_route=(params)
    self.routable = params[:kind].constantize.new(params.reject {|k,v| k == "kind"})
  end
end

И наконец, у меня есть следующая строка в config / startup.rb:

config.enable_rails :path => 'gui', :env => :development

Я знаю, что модель работает, потому что я могу создавать записи, используя сервер rails.Но я даже не знаю, как получить какую-либо информацию о том, что заставляет план набора отключать вызов, когда он достигает первой строки выше.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Некоторые вещи для проверки:

  • Убедитесь, что вы установили ведение журнала на :debug в config/startup.rb
  • Убедитесь, что вы включили либо интеграция с Rails илиинтеграция с базой данных, а не обе.
  • Если вы работаете с версией Adhearsion до 1.1.0, некоторые исключения, возникающие в dialplan.rb, могут быть незаметно потеряны.Рассмотрите возможность обновления до 1.1.0 или более поздней версии (1.2.0 является стабильной на текущий момент) и создайте обработчик исключений.Это может быть простой регистратор сообщений или вы можете сообщить об исключениях в Airbrake.См. Нижнюю часть этого поста для простого регистратора исключений Adhearsion.
  • Попробуйте запустить консоль Adhearsion, чтобы увидеть, загружены ли ваши модели вообще.Запустите консоль Adhearsion с ahn start console /path/to/ahn/app.После этого у вас будет консоль, похожая на консоль Rails, и вы должны иметь доступ ко всем вашим моделям ActiveRecord (при условии, что интеграция с Rails загружена правильно).

Пример регистратора исключений для Adhearsion 1.1.0 или более поздней версии.Поместите это в ваши events.rb:

events.exception.each do |e|
  ahn_log.error e.message
  ahn_log.debug e.backtrace.join("\n")
end

Общие замечания по Rails и интеграции с базой данных для Adhearsion:

  • Для интеграции с Rails есть строка, похожая на config.enable_rails :path => '/path/to/rails/app', :env => :production
  • Для интеграции с базой данных используйте что-то вроде: config.enable_database :adapter => 'mysql', :username => 'root', :password => '', :host => 'localhost'
  • Только для интеграции с базой данных (не для интеграции с Rails), вы должны убедиться, что ваши модели находятся в том месте, где Adhearsion может их найти.Расположение по умолчанию models/, но это можно изменить, отредактировав файл .ahnrc в базовом каталоге приложения Adhearsion.
0 голосов
/ 31 августа 2011

попробуйте запустить этот код в консоли rails

сначала запустите консоль

bundle exec rails console

, а затем попробуйте запустить код, вызывающий проблему

CallFlow.where(:dnis => "something").first # replace "something" with something valid
...