rake_notifier 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ *.swp
2
+ .DS_Store
data/README.markdown ADDED
@@ -0,0 +1,19 @@
1
+ ### Rake Notifier send a notification to your email address whenever a Rake task in your application fails.
2
+
3
+
4
+ #### Usage
5
+ 1. Add to Gemfile
6
+ ```ruby
7
+ gem 'rake_notifier'
8
+ ```
9
+
10
+ 2. If you had already setup exception_notification_rails3.gem, rake_notifier.gem will read your email configurations from it.
11
+
12
+ 3. If your dont use exception_notification_rails3.gem, you can setup it
13
+ customly, just
14
+ ```ruby
15
+ Rake.email_from = 'your@email.com'
16
+ Rake.email_to = 'another@email.com'
17
+ ```
18
+
19
+ #### And then you're ready to go.
@@ -0,0 +1,41 @@
1
+ require 'pony'
2
+ require 'rake/task'
3
+
4
+ # load only_one_rake.gem first, because it'll overwrite Rake::Task#execute directly
5
+ require 'only_one_rake'
6
+
7
+ module Rake
8
+ mattr_accessor :email_from, :email_to
9
+
10
+ class Task
11
+ alias :orig_execute :execute
12
+ def execute(args=nil)
13
+ orig_execute(args)
14
+ rescue Exception => exception
15
+ handle_exception(exception)
16
+ end
17
+
18
+ def handle_exception(exception)
19
+ if Rake.email_from.blank? # lazy load
20
+ # fetch emails from ExceptionNotifier's configuration
21
+ if defined? ExceptionNotifier
22
+ args = Rails::Application.subclasses.map {|app| app.config.middleware.middlewares }.flatten.select {|m| m === ExceptionNotifier }.map {|en| en.args }.flatten
23
+ if args.blank?
24
+ raise "Please setup your ExceptionNotifier first"
25
+ else
26
+ Rake.email_from = args[0][:sender_address]
27
+ Rake.email_to = args.map {|i| i[:exception_recipients] }.flatten.join(", ")
28
+ end
29
+ end
30
+ end
31
+
32
+ $stderr.puts
33
+ $stderr.puts subject = "Rake exception - #{exception.message}"
34
+ $stderr.puts body = "#{exception.message}\n\n#{exception.backtrace.join("\n")}"
35
+ Pony.mail(:from => Rake.email_from, :to => Rake.email_to, :subject => subject, :body => body)
36
+ $stderr.puts
37
+ $stderr.puts "Exception details sent to #{Rake.email_to}"
38
+ $stderr.puts
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,16 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "rake_notifier"
3
+ s.version = "0.1"
4
+ s.date = '2013-05-08'
5
+ s.summary = ""
6
+ s.description = s.summary
7
+ s.authors = ["Oscar Del Ben", "David Chen"]
8
+ s.email = 'mvjome@gmail.com'
9
+ s.files = `git ls-files`.split("\n")
10
+ s.homepage = 'http://github.com/mvj3/rake_notifier'
11
+ s.licenses = ["MIT"]
12
+
13
+ s.add_dependency "rake"
14
+ s.add_dependency "pony"
15
+ s.add_dependency "only_one_rake"
16
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rake_notifier
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Oscar Del Ben
9
+ - David Chen
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-05-08 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: pony
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: only_one_rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
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
+ description: ''
64
+ email: mvjome@gmail.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - README.markdown
71
+ - lib/rake_notifier.rb
72
+ - rake_notifier.gemspec
73
+ homepage: http://github.com/mvj3/rake_notifier
74
+ licenses:
75
+ - MIT
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ requirements: []
93
+ rubyforge_project:
94
+ rubygems_version: 1.8.25
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: ''
98
+ test_files: []