class ErrbitJiraPlugin::IssueTracker

Constants

FIELDS
LABEL
NOTE

Public Class Methods

body_template() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 63
def self.body_template
  @body_template ||= ERB.new(File.read(
    File.join(
      ErrbitJiraPlugin.root, 'views', 'jira_issues_body.txt.erb'
    )
  ))
end
fields() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 45
def self.fields
  FIELDS
end
icons() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 49
def self.icons
  @icons ||= {
    create: [
      'image/png', ErrbitJiraPlugin.read_static_file('jira_create.png')
    ],
    goto: [
      'image/png', ErrbitJiraPlugin.read_static_file('jira_goto.png'),
    ],
    inactive: [
      'image/png', ErrbitJiraPlugin.read_static_file('jira_inactive.png'),
    ]
  }
end
label() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 37
def self.label
  LABEL
end
note() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 41
def self.note
  NOTE
end

Public Instance Methods

client() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 87
def client
  options = {
    :username => params['username'],
    :password => params['password'],
    :site => params['base_url'],
    :auth_type => :basic,
    :context_path => (params['context_path'] == '/') ? params['context_path'] = '' : params['context_path']
  }
  JIRA::Client.new(options)
end
comments_allowed?() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 83
def comments_allowed?
  false
end
configured?() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 71
def configured?
  params['project_id'].present?
end
create_issue(problem, reported_by = nil) click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 98
def create_issue(problem, reported_by = nil)
  begin
    issue_title =  "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}".delete!("\n")
    issue_description = self.class.body_template.result(binding).unpack('C*').pack('U*')
    issue = {"fields"=>{"summary"=>issue_title, "description"=>issue_description,"project"=>{"key"=>params['project_id']},"issuetype"=>{"id"=>"3"},"priority"=>{"name"=>params['issue_priority']}}}
    
    issue_build = client.Issue.build
    issue_build.save(issue)
    
    problem.update_attributes(
      :issue_link => jira_url(issue_build.key),
      :issue_type => params['issue_type']
    )

  rescue JIRA::HTTPError
    raise ErrbitJiraPlugin::IssueError, "Could not create an issue with Jira.  Please check your credentials."
  end
end
ctx_path() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 121
def ctx_path
  (params['context_path'] == '') ? '/' : params['context_path']
end
errors() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 75
def errors
  errors = []
  if self.class.fields.detect {|f| options[f[0]].blank? }
    errors << [:base, 'You must specify all non optional values!']
  end
  errors
end
jira_url(project_id) click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 117
def jira_url(project_id)
  "#{params['base_url']}#{ctx_path}browse/#{project_id}"
end
url() click to toggle source
# File lib/errbit_jira_plugin/issue_tracker.rb, line 125
def url
  params['base_url']
end