Class: ErrbitFogbugzPlugin::IssueTracker
- Inherits:
-
ErrbitPlugin::IssueTracker
- Object
- ErrbitPlugin::IssueTracker
- ErrbitFogbugzPlugin::IssueTracker
- Defined in:
- lib/errbit_fogbugz_plugin/issue_tracker.rb
Constant Summary collapse
- LABEL =
'fogbugz'- NOTE =
''- FIELDS =
[ [:project_id, { :label => "Area Name" }], [:account, { :label => "FogBugz URL", :placeholder => "abc from https://abc.fogbugz.com/" }], [:username, { :placeholder => "Username/Email for your account" }], [:password, { :placeholder => "Password for your account" }] ]
Class Method Summary collapse
Instance Method Summary collapse
- #client ⇒ Object
- #comments_allowed? ⇒ Boolean
- #configured? ⇒ Boolean
- #create_issue(problem, reported_by = nil) ⇒ Object
- #errors ⇒ Object
- #url ⇒ Object
Class Method Details
.body_template ⇒ Object
38 39 40 41 42 43 44 |
# 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 ⇒ Object
34 35 36 |
# File 'lib/errbit_fogbugz_plugin/issue_tracker.rb', line 34 def self.fields FIELDS end |
.label ⇒ Object
26 27 28 |
# File 'lib/errbit_fogbugz_plugin/issue_tracker.rb', line 26 def self.label LABEL end |
.note ⇒ Object
30 31 32 |
# File 'lib/errbit_fogbugz_plugin/issue_tracker.rb', line 30 def self.note NOTE end |
Instance Method Details
#client ⇒ Object
64 65 66 67 68 69 70 71 72 |
# 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? ⇒ Boolean
54 |
# File 'lib/errbit_fogbugz_plugin/issue_tracker.rb', line 54 def comments_allowed?; false; end |
#configured? ⇒ Boolean
50 51 52 |
# File 'lib/errbit_fogbugz_plugin/issue_tracker.rb', line 50 def configured? errors.empty? end |
#create_issue(problem, reported_by = nil) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# 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 ⇒ Object
56 57 58 59 60 61 62 |
# 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 ⇒ Object
46 47 48 |
# File 'lib/errbit_fogbugz_plugin/issue_tracker.rb', line 46 def url sprintf('https://%s.fogbugz.com', params['account']) end |