class ErrbitFogbugzPlugin::IssueTracker

Constants

FIELDS
LABEL
NOTE

Public Class Methods

body_template() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 38
def self.body_template
  @body_template ||= ERB.new(File.read(
    File.join(
      ErrbitFogbugzPlugin.root, 'views', 'fogbugz_issues_body.txt.erb'
    )
  ))
end
fields() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 34
def self.fields
  FIELDS
end
label() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 26
def self.label
  LABEL
end
note() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 30
def self.note
  NOTE
end

Public Instance Methods

client() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 64
def client
  fogbugz = Fogbugz::Interface.new(
    :email => params['username'],
    :password => params['password'],
    :uri => url
  )
  fogbugz.authenticate
  fogbugz
end
comments_allowed?() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 54
def comments_allowed?; false; end
configured?() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 50
def configured?
  errors.empty?
end
create_issue(problem, reported_by = nil) click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 74
def create_issue(problem, reported_by = nil)
  issue = {
    'sTitle' => "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}",
    'sArea' => params['project_id'],
    'sEvent' => self.class.body_template.result(binding),
    'sTags' => ['errbit'].join(','),
    'cols' => ['ixBug'].join(',')
  }

  fb_resp = client.command(:new, issue)
  problem.update_attributes(
    :issue_link => sprintf('%s/default.asp?%s', url, fb_resp['case']['ixBug']),
    :issue_type => self.class.label
  )
end
errors() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 56
def errors
  errors = []
  if self.class.fields.detect {|f| params[f[0].to_s].blank? }
    errors << [:base, 'You must specify your FogBugz Area Name, FogBugz URL, Username, and Password']
  end
  errors
end
url() click to toggle source
# File lib/errbit_fogbugz_plugin/issue_tracker.rb, line 46
def url
  sprintf('https://%s.fogbugz.com', params['account'])
end