errbit_cloudfuji 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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