errbit_cloudfuji 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source :rubygems
2
2
 
3
+ gem 'rake'
4
+
3
5
  gem 'bundler_local_development', :group => :development, :require => false
4
6
  begin
5
7
  require 'bundler_local_development'
@@ -13,14 +15,3 @@ gem 'cloudfuji', :git => 'git://github.com/cloudfuji/cloudfuji_client.git'
13
15
  group :test, :development do
14
16
  gem 'pg' # Default database for testing
15
17
  end
16
-
17
- group :test do
18
- gem 'rspec'
19
- gem 'combustion'
20
- gem 'factory_girl'
21
- unless ENV["CI"]
22
- gem 'ruby-debug', :platform => :mri_18
23
- gem (RUBY_VERSION == "1.9.2" ? 'ruby-debug19' : 'debugger'), :platform => :mri_19
24
- end
25
- end
26
-
data/Rakefile CHANGED
@@ -1,27 +1,4 @@
1
1
  #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
- Bundler.require :default, :development
8
-
9
- task :environment do
10
- Combustion.initialize!
11
- end
12
- Combustion::Application.load_tasks
13
-
14
- class Combustion::Application
15
- # Add migrations from all engines
16
- Railties.engines.each do |engine|
17
- config.paths['db/migrate'] += engine.paths['db/migrate'].existent
18
- end
19
- end
20
-
21
- desc 'Default: run spec tests.'
22
- task :default => :spec
23
-
24
- # Let Combustion handle database preparation
25
- Rake::Task["spec"].prerequisites.clear
2
+ require 'rake'
26
3
 
27
4
  Bundler::GemHelper.install_tasks
@@ -1,27 +1,41 @@
1
- class NoticeObserver < Mongoid::Observer
1
+ class CloudfujiNoticeObserver < Mongoid::Observer
2
+ observe :notice
3
+
2
4
  def after_create(notice)
3
5
  if ::Cloudfuji::Platform.on_cloudfuji?
4
6
  @notice = notice
5
7
  @err = notice.err
6
8
  @app = notice.problem.app
7
9
 
10
+ err_url = Rails.application.routes.url_helpers.app_err_url(@app, @err, :host => ENV['CLOUDFUJI_DOMAIN'])
11
+
8
12
  human_message = notice_title(notice.err.problem)
9
- human_message += " see more at #{Rails.application.routes.url_helpers.app_err_url(@app, @notice.problem, :host => ENV['CLOUDFUJI_DOMAIN'])}"
13
+ human_message += " - see more at #{err_url}"
10
14
  event = {
11
- :category => :app,
12
- :name => :errored,
15
+ :category => :error,
16
+ :name => :caught,
13
17
  :data => {
14
- :human => human_message,
18
+ :human => human_message,
19
+ :error_ido_id => @err.ido_id,
20
+ :app_name => @app.name,
15
21
  :environment_name => @notice.environment_name,
16
22
  :occurrences => @notice.problem.notices_count,
17
23
  :message => @notice.message,
18
24
  :app_backtrace => @notice.app_backtrace,
19
25
  :request => @notice.request,
20
26
  :source => "Errbit",
21
- :url => Rails.application.routes.url_helpers.app_err_url(@app, @err, :host => ENV['CLOUDFUJI_DOMAIN'])
27
+ :url => err_url
22
28
  }
23
29
  }
24
30
 
31
+ if @notice.respond_to?(:user_attributes) && @notice.user_attributes.present?
32
+ event[:data].merge! :user_attributes => {
33
+ :ido_id => @notice.user_attributes[:ido_id],
34
+ :email => @notice.user_attributes[:email]}
35
+ end
36
+
37
+ puts "Publishing Cloudfuji Event: #{event.inspect}"
38
+
25
39
  ::Cloudfuji::Event.publish(event)
26
40
 
27
41
  puts "Notifying: #{@app.watchers.inspect}"
@@ -32,7 +46,10 @@ class NoticeObserver < Mongoid::Observer
32
46
  end
33
47
  end
34
48
 
49
+ private
50
+
35
51
  def notice_title(notice)
36
52
  "[#{@app.name}][#{@notice.environment_name}] #{@notice.message}"
37
53
  end
38
54
  end
55
+
@@ -2,7 +2,7 @@ require 'errbit/cloudfuji'
2
2
 
3
3
  Errbit::Application.configure do
4
4
  # Register observers to fire Cloudfuji events
5
- config.mongoid.observers = :err_observer, :notice_observer
5
+ config.mongoid.observers = :cloudfuji_notice_observer
6
6
 
7
7
  # Set default host for ActionMailer
8
8
  default_host = ENV['ERRBIT_HOST'] || ENV['BUSHIDO_DOMAIN']
@@ -12,11 +12,8 @@ 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_development_dependency 'rspec-rails', '~> 2.6'
16
- s.add_development_dependency 'capybara'
17
- s.add_development_dependency 'combustion'
18
-
19
15
  s.add_dependency 'cloudfuji', '>= 0.0.42'
20
16
  s.add_dependency 'devise_cloudfuji_authenticatable'
17
+ s.add_dependency 'uuid'
21
18
 
22
19
  end
@@ -4,18 +4,17 @@ module Errbit
4
4
  def enable_cloudfuji!
5
5
  load_hooks!
6
6
  extend_user!
7
- extend_notice!
7
+ extend_err!
8
8
  disable_devise_for_cloudfuji_controllers!
9
9
  end
10
10
 
11
11
  def extend_user!
12
12
  puts "Extending the user model"
13
- User.instance_eval do
13
+ User.class_eval do
14
+ field :ido_id
14
15
  validates_presence_of :ido_id
15
16
  validates_uniqueness_of :ido_id
16
- end
17
17
 
18
- User.class_eval do
19
18
  def cloudfuji_extra_attributes(extra_attributes)
20
19
  self.name = "#{extra_attributes['first_name'].to_s} #{extra_attributes['last_name'].to_s}"
21
20
  self.email = extra_attributes["email"]
@@ -24,20 +23,13 @@ module Errbit
24
23
  end
25
24
  end
26
25
 
27
- def extend_notice!
28
- Notice.class_eval do
29
- def publish_cloudfuji_event
30
- human_message = "App at #{server_environment['hostname']} error"
31
- ::Cloudfuji::Event.publish({
32
- :category => :app,
33
- :name => :error,
34
- :data => {
35
- :human => human_message,
36
- :source => "Errbit",
37
- :url => "#{ENV['PUBLIC_URL']}/#tickets/#{self.to_param}"
38
- }
39
- })
40
- end
26
+ def extend_err!
27
+ Err.class_eval do
28
+ field :ido_id
29
+ validates_presence_of :ido_id
30
+ validates_uniqueness_of :ido_id
31
+
32
+ before_validation Proc.new { |e| e.ido_id ||= UUID.new.generate }
41
33
  end
42
34
  end
43
35
 
@@ -1,5 +1,5 @@
1
1
  module Errbit
2
2
  module Cloudfuji
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
@@ -1,6 +1,7 @@
1
1
  # Gem Dependencies
2
2
  require 'cloudfuji'
3
3
  require 'devise_cloudfuji_authenticatable'
4
+ require 'uuid'
4
5
 
5
6
  # Rails Engine
6
7
  require 'errbit_cloudfuji/engine'
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.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,64 +10,32 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-21 00:00:00.000000000 Z
13
+ date: 2012-05-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rspec-rails
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ~>
21
- - !ruby/object:Gem::Version
22
- version: '2.6'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ~>
29
- - !ruby/object:Gem::Version
30
- version: '2.6'
31
- - !ruby/object:Gem::Dependency
32
- name: capybara
16
+ name: cloudfuji
33
17
  requirement: !ruby/object:Gem::Requirement
34
18
  none: false
35
19
  requirements:
36
20
  - - ! '>='
37
21
  - !ruby/object:Gem::Version
38
- version: '0'
39
- type: :development
22
+ version: 0.0.42
23
+ type: :runtime
40
24
  prerelease: false
41
25
  version_requirements: !ruby/object:Gem::Requirement
42
26
  none: false
43
27
  requirements:
44
28
  - - ! '>='
45
29
  - !ruby/object:Gem::Version
46
- version: '0'
30
+ version: 0.0.42
47
31
  - !ruby/object:Gem::Dependency
48
- name: combustion
32
+ name: devise_cloudfuji_authenticatable
49
33
  requirement: !ruby/object:Gem::Requirement
50
34
  none: false
51
35
  requirements:
52
36
  - - ! '>='
53
37
  - !ruby/object:Gem::Version
54
38
  version: '0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- - !ruby/object:Gem::Dependency
64
- name: cloudfuji
65
- requirement: !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
70
- version: 0.0.42
71
39
  type: :runtime
72
40
  prerelease: false
73
41
  version_requirements: !ruby/object:Gem::Requirement
@@ -75,9 +43,9 @@ dependencies:
75
43
  requirements:
76
44
  - - ! '>='
77
45
  - !ruby/object:Gem::Version
78
- version: 0.0.42
46
+ version: '0'
79
47
  - !ruby/object:Gem::Dependency
80
- name: devise_cloudfuji_authenticatable
48
+ name: uuid
81
49
  requirement: !ruby/object:Gem::Requirement
82
50
  none: false
83
51
  requirements:
@@ -104,8 +72,7 @@ files:
104
72
  - MIT-LICENSE
105
73
  - README
106
74
  - Rakefile
107
- - app/models/err_observer.rb
108
- - app/models/notice_observer.rb
75
+ - app/observers/cloudfuji_notice_observer.rb
109
76
  - app/views/users/_fields.html.haml
110
77
  - app/views/users/index.html.haml
111
78
  - config.ru
@@ -121,7 +88,6 @@ files:
121
88
  - lib/errbit_cloudfuji/engine.rb
122
89
  - lib/errbit_cloudfuji/version.rb
123
90
  - lib/tasks/cloudfuji.rake
124
- - spec/spec_helper.rb
125
91
  homepage: http://cloudfuji.com
126
92
  licenses: []
127
93
  post_install_message:
@@ -134,12 +100,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
100
  - - ! '>='
135
101
  - !ruby/object:Gem::Version
136
102
  version: '0'
103
+ segments:
104
+ - 0
105
+ hash: -3638422326911840529
137
106
  required_rubygems_version: !ruby/object:Gem::Requirement
138
107
  none: false
139
108
  requirements:
140
109
  - - ! '>='
141
110
  - !ruby/object:Gem::Version
142
111
  version: '0'
112
+ segments:
113
+ - 0
114
+ hash: -3638422326911840529
143
115
  requirements: []
144
116
  rubyforge_project:
145
117
  rubygems_version: 1.8.24
@@ -1,22 +0,0 @@
1
- class ErrObserver < Mongoid::Observer
2
- def after_create(err)
3
- if ::Cloudfuji::Platform.on_cloudfuji?
4
- human_message = issue_title(err.problem)
5
- human_message += " see more at #{Rails.application.routes.url_helpers.app_err_url(err.problem.app, err, :host => ENV['CLOUDFUJI_DOMAIN'])}"
6
- event = {
7
- :category => :app,
8
- :name => :errored,
9
- :data => {
10
- :human => human_message,
11
- :source => "Errbit",
12
- :url => Rails.application.routes.url_helpers.app_err_url(err.problem.app, err, :host => ENV['CLOUDFUJI_DOMAIN'])
13
- }
14
- }
15
- ::Cloudfuji::Event.publish(event)
16
- end
17
- end
18
-
19
- def issue_title(problem)
20
- "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}"
21
- end
22
- end
data/spec/spec_helper.rb DELETED
@@ -1,22 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- require 'rails/all'
4
-
5
- Bundler.require :default, :development
6
-
7
- require 'rspec/rails'
8
- require 'factory_girl'
9
- require 'ffaker'
10
-
11
- # Load factories from spec/factories
12
- Dir[File.expand_path("../factories/*.rb", __FILE__)].each {|factory| require factory }
13
-
14
- Combustion.initialize!
15
-
16
- RSpec.configure do |config|
17
- config.use_transactional_fixtures = true
18
- end
19
-
20
- # Cloudfuji::Platform.on_cloudfuji? is false,
21
- # so we need to enable it manually
22
- Errbit::Cloudfuji.enable_cloudfuji!