issue_tracker.rb 1.05 KB
class IssueTracker
  include Mongoid::Document
  include Mongoid::Timestamps

  include Rails.application.routes.url_helpers

  default_url_options[:host] = ActionMailer::Base.default_url_options[:host]

  embedded_in :app, :inverse_of => :issue_tracker

  field :type_tracker, :type => String
  field :options, :type => Hash, :default => {}

  ##
  # Update default_url_option with valid data from the request information
  #
  # @param [ Request ] a request with host, port and protocol
  #
  def self.update_url_options(request)
    IssueTracker.default_url_options[:host] = request.host
    IssueTracker.default_url_options[:port] = request.port
    IssueTracker.default_url_options[:protocol] = request.scheme
  end

  def tracker
    @tracker ||= ErrbitPlugin::Register.issue_tracker(self.type_tracker).new(app, self.options)
  rescue NameError
    ErrbitPlugin::NoneIssueTracker.new(app, {})
  end
  delegate :configured?, :to => :tracker
  delegate :create_issue, :to => :tracker
  delegate :label, :to => :tracker
  delegate :comments_allowed?, :to => :tracker
end