errbit_cloudfuji 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,40 @@
1
+ module IssueTrackers
2
+ class CloudfujiTracker < ::IssueTracker
3
+ Label = "cloudfuji"
4
+ Fields = [
5
+ [:project_id, {
6
+ :label => "Project Ido ID",
7
+ :placeholder => "Ido ID of project to create task on"
8
+ }]
9
+ ]
10
+
11
+ def create_issue(problem, reported_by)
12
+ if ::Cloudfuji::Platform.on_cloudfuji?
13
+ err = problem.errs.last
14
+
15
+ event = {
16
+ :category => :project_task,
17
+ :name => :created,
18
+ :data => {
19
+ :ido_id => err.ido_id,
20
+ :title => issue_title(problem),
21
+ :description => body_template.result(binding),
22
+ :task_type => 'bug',
23
+ :state => 'unscheduled',
24
+ :requested_by_id => reported_by.ido_id,
25
+ :project_id => project_id,
26
+ :labels => "errbit"
27
+ }
28
+ }
29
+
30
+ puts "Publishing Cloudfuji Event: #{event.inspect}"
31
+
32
+ ::Cloudfuji::Event.publish(event)
33
+ end
34
+ end
35
+
36
+ def body_template
37
+ @@body_template ||= ERB.new(File.read(File.expand_path("../../../views/issue_trackers/cloudfuji_body.txt.erb", __FILE__)).gsub(/^\s*/, ''))
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,12 @@
1
+ See this exception on Errbit: <%= app_err_url problem.app, problem %>
2
+
3
+ <% if notice = problem.notices.first %>
4
+ <% if notice.request['url'].present? %>URL: <%= notice.request['url'] %> | <% end %>
5
+
6
+ Where: <%= notice.where %> |
7
+
8
+ Occurred: <%= notice.created_at.to_s :micro %> |
9
+
10
+ Similar: <%= (notice.problem.notices_count - 1).to_s %>
11
+ <% end %>
12
+
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.files = `git ls-files`.split("\n")
13
13
  s.version = Errbit::Cloudfuji::VERSION
14
14
 
15
- s.add_dependency 'cloudfuji', '>= 0.0.42'
15
+ s.add_dependency 'cloudfuji', '>= 0.0.44'
16
16
  s.add_dependency 'devise_cloudfuji_authenticatable'
17
17
  s.add_dependency 'uuid'
18
18
 
@@ -0,0 +1,27 @@
1
+ module Errbit
2
+ module Cloudfuji
3
+ module EventObservers
4
+ class ProjectTaskObserver < ::Cloudfuji::EventObserver
5
+
6
+ def project_task_created
7
+ data = params['data']
8
+ # Find error with matching ido_id
9
+ if err = Err.where(:ido_id => data['ido_id']).first
10
+ # Update issue link on error with task url
11
+ if data['url'] && err.problem.issue_link != data['url']
12
+ err.problem.update_attribute :issue_link, data['url']
13
+ end
14
+
15
+ # If task state is 'accepted', then resolve the error
16
+ if data['state'] == 'accepted'
17
+ err.problem.resolve!
18
+ end
19
+ end
20
+ end
21
+ # Use same method for task create and update
22
+ alias :project_task_updated :project_task_created
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,7 +1,7 @@
1
1
  module Errbit
2
2
  module Cloudfuji
3
3
  module EventObservers
4
- class AppObserver < ::Cloudfuji::EventObserver
4
+ class UserObserver < ::Cloudfuji::EventObserver
5
5
  def user_added
6
6
  puts "Adding a new user with incoming data #{params.inspect}"
7
7
  puts "Devise username column: #{::Devise.cas_username_column}="
@@ -2,9 +2,10 @@ module Errbit
2
2
  module Cloudfuji
3
3
  class << self
4
4
  def enable_cloudfuji!
5
- load_hooks!
5
+ load_observers!
6
6
  extend_user!
7
7
  extend_err!
8
+ extend_app!
8
9
  disable_devise_for_cloudfuji_controllers!
9
10
  end
10
11
 
@@ -33,8 +34,21 @@ module Errbit
33
34
  end
34
35
  end
35
36
 
36
- def load_hooks!
37
- Dir["#{Dir.pwd}/lib/cloudfuji/**/*.rb"].each { |file| require file }
37
+ def extend_app!
38
+ # Make CloudfujiTracker the default tracker
39
+ AppsController.class_eval do
40
+ def plug_params_with_cloudfuji_tracker(app)
41
+ plug_params_without_cloudfuji_tracker(app)
42
+ if app.issue_tracker.class == IssueTracker
43
+ app.issue_tracker = CloudfujiTracker.new
44
+ end
45
+ end
46
+ alias_method_chain :plug_params, :cloudfuji_tracker
47
+ end
48
+ end
49
+
50
+ def load_observers!
51
+ Dir[File.expand_path("../cloudfuji/event_observers/*.rb", __FILE__)].each { |file| require file }
38
52
  end
39
53
 
40
54
  # Temporary hack because all routes require authentication in
@@ -12,6 +12,9 @@ Rails::Engine.initializers.detect{|i| i.name == :add_view_paths }.
12
12
  module Errbit
13
13
  module Cloudfuji
14
14
  class Engine < Rails::Engine
15
+ config.to_prepare do
16
+ Dir[File.expand_path("../../../app/models/issue_trackers/*.rb", __FILE__)].each {|f| require f }
17
+ end
15
18
  end
16
19
  end
17
20
  end
@@ -1,5 +1,5 @@
1
1
  module Errbit
2
2
  module Cloudfuji
3
- VERSION = '0.1.5'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: errbit_cloudfuji
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-29 00:00:00.000000000 Z
13
+ date: 2012-05-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cloudfuji
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.0.42
22
+ version: 0.0.44
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
- version: 0.0.42
30
+ version: 0.0.44
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: devise_cloudfuji_authenticatable
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +72,12 @@ files:
72
72
  - MIT-LICENSE
73
73
  - README
74
74
  - Rakefile
75
+ - app/assets/images/cloudfuji_create.png
76
+ - app/assets/images/cloudfuji_goto.png
77
+ - app/assets/images/cloudfuji_inactive.png
78
+ - app/models/issue_trackers/cloudfuji_tracker.rb
75
79
  - app/observers/cloudfuji_notice_observer.rb
80
+ - app/views/issue_trackers/cloudfuji_body.txt.erb
76
81
  - app/views/users/_fields.html.haml
77
82
  - app/views/users/index.html.haml
78
83
  - config.ru
@@ -84,6 +89,7 @@ files:
84
89
  - errbit_cloudfuji.gemspec
85
90
  - lib/errbit/cloudfuji.rb
86
91
  - lib/errbit/cloudfuji/event_observers/app_observer.rb
92
+ - lib/errbit/cloudfuji/event_observers/project_task_observer.rb
87
93
  - lib/errbit/cloudfuji/event_observers/user_observer.rb
88
94
  - lib/errbit_cloudfuji.rb
89
95
  - lib/errbit_cloudfuji/engine.rb
@@ -103,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
109
  version: '0'
104
110
  segments:
105
111
  - 0
106
- hash: 1064790250939354054
112
+ hash: -4071831119419895463
107
113
  required_rubygems_version: !ruby/object:Gem::Requirement
108
114
  none: false
109
115
  requirements:
@@ -112,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
118
  version: '0'
113
119
  segments:
114
120
  - 0
115
- hash: 1064790250939354054
121
+ hash: -4071831119419895463
116
122
  requirements: []
117
123
  rubyforge_project:
118
124
  rubygems_version: 1.8.24