mail_to_hip_chat 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  _
2
- [_| . . . . .
3
- .-----|--, |-. . ,-. ,-. |-. ,-. |- ,-,-. ,-. . | ," . . ,-. ,-. ,-. |
4
- / | /_\_ | | | | | | | | ,-| | -- | | | ,-| | | -- |- | | | | | | |-' |
5
- | |__.-| ' ' ' |-' `-' ' ' `-^ `' ' ' ' `-^ ' `' | `-^ ' ' ' ' `-' `'
6
- | |__\_| | '
7
- '---,-,-;---' '
2
+ [_| . . . . .
3
+ .-----|--, ,-,-. ,-. . | |- ,-. |-. . ,-. ,-. |-. ,-. |-
4
+ / | /_\_ | | | ,-| | | | | | | | | | | | | | ,-| |
5
+ | |__.-| ' ' ' `-^ ' `'---`' `-'---' ' ' |-'---`-' ' ' `-^ `'
6
+ | |__\_| |
7
+ '---,-,-;---' '
8
8
  | |
9
9
 
10
10
  # Mail To HipChat
@@ -32,12 +32,14 @@ You will need an account on Heroku and admin access to your HipChat group.
32
32
  $ echo 'source "http://rubygems.org"' >> Gemfile
33
33
  $ echo 'gem "mail_to_hip_chat"' >> Gemfile
34
34
  $ bundle install
35
- $ git commit -a -m "Getting down with bundler"
35
+ $ git add Gemfile Gemfile.lock
36
+ $ git commit -m "Getting down with bundler"
36
37
 
37
38
  3. Copy over the default config.ru.
38
39
 
39
40
  $ cp "`bundle show mail_to_hip_chat`/support/config.ru" .
40
- $ git commit -a -m "Adding default config.ru"
41
+ $ git add config.ru
42
+ $ git commit -m "Adding default config.ru"
41
43
 
42
44
  4. Set up a new Heroku application with CloudMailIn and Piggyback SSL.
43
45
 
@@ -79,12 +81,27 @@ You will need an account on Heroku and admin access to your HipChat group.
79
81
 
80
82
  ## Hooking it up to Airbrake
81
83
 
82
- Just add a new user to your project, set their email address to `CLOUDMAILIN_FORWARD_ADDRESS`, and watch the exceptions roll in. Then turn your face from God and weep in abject horror.
84
+ Just add a new user to your project, set their email address to `CLOUDMAILIN_FORWARD_ADDRESS`, and watch the exceptions roll in. Then turn your face from God and weep in abject horror.
83
85
 
84
86
  ## Adding new message handlers
85
87
 
88
+ See the included Airbrake handler for an example. Really, any object that has a `call` method that takes one argument can be used.
89
+
86
90
  ## FAQ
87
91
 
92
+ * Can I use something besides CloudMailIn/Heroku?
93
+
94
+ Most likely, yes. The code has only been tested using CloudMailIn and Heroku, but really, there's not that much tying it to that particular kind of setup, besides the CloudMailIn signature verification stuff in the Rack app.
95
+
96
+ * Could I say, feed it email using a `.forward` file?
97
+
98
+ Probably. The only part dependent on actually being a web app is the Rack application itself.
99
+
100
+ * How do your projects end up with such rad ASCII art?
101
+
102
+ $ figlist | xargs -I {} /bin/bash -c "figlet -f {} your_project_name"
103
+ $ open "http://google.com/search?q=something_related_to_your_project+ascii+art"
104
+
88
105
  ## TODO
89
106
 
90
107
  * There are too many steps for initial setup. This needs to be cut down.
@@ -1,15 +1,22 @@
1
1
  require "hipchat-api"
2
2
 
3
3
  module MailToHipChat
4
+ # Helpers for building a message chute. A message chute is something that responds to #call, and returns true if it's
5
+ # able to deliver the message off to HipChat. A chute can be something as simple as a Proc object. The ones this
6
+ # gem ship with are small classes that make use of this module.
4
7
  module MessageChute
5
-
6
- def initialize(opts)
8
+
9
+ # @param [Hash] opts The options to create a message chute with
10
+ # @option opts [Array, String] :rooms A room or an array of rooms to send messages to
11
+ def initialize_hipchat_opts(opts)
7
12
  @rooms = Array(opts[:rooms])
8
13
  @hipchat_api = opts[:hipchat_api] || HipChat::API.new(opts[:api_token])
9
14
  end
10
15
 
11
16
  private
12
17
 
18
+ # @param [#to_s] from The sender the message will show up as being from in HipChat
19
+ # @param [#to_s] message The message to send
13
20
  def message_rooms(from, message)
14
21
  @rooms.each do |room_id|
15
22
  @hipchat_api.rooms_message(room_id, from, message)
@@ -3,9 +3,14 @@ require "mustache"
3
3
 
4
4
  module MailToHipChat
5
5
  module MessageChutes
6
+ # Takes exception notification emails from Airbrake and sends them to the configured HipChat rooms.
6
7
  class Airbrake
7
8
  include MessageChute
8
9
 
10
+ def initialize(opts)
11
+ initialize_hipchat_opts(opts)
12
+ end
13
+
9
14
  def call(params)
10
15
  return false unless process_message(params["plain"])
11
16
  true
@@ -3,9 +3,15 @@ require "mustache"
3
3
 
4
4
  module MailToHipChat
5
5
  module MessageChutes
6
+ # Takes a test email and sends it to the configured HipChat rooms, to verify a deployment based on this library
7
+ # is working.
6
8
  class TestEmail
7
9
  include MessageChute
8
10
 
11
+ def initialize(opts)
12
+ initialize_hipchat_opts(opts)
13
+ end
14
+
9
15
  def call(params)
10
16
  return false unless params["subject"] =~ /testing setup/i
11
17
  message = Mustache.render("Message:<br />{{message}}", :message => params["plain"])
@@ -1,3 +1,3 @@
1
1
  module MailToHipChat
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -4,7 +4,11 @@ require "mail_to_hip_chat/message_chute"
4
4
  class MessageChuteTest < Test::Unit::TestCase
5
5
  class TestMessageChute
6
6
  include MailToHipChat::MessageChute
7
-
7
+
8
+ def initialize(opts)
9
+ initialize_hipchat_opts(opts)
10
+ end
11
+
8
12
  def call(params)
9
13
  message_rooms(params[:sender], params[:message])
10
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail_to_hip_chat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http_parser.rb
16
- requirement: &70117439062040 !ruby/object:Gem::Requirement
16
+ requirement: &70189061461960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.5'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70117439062040
24
+ version_requirements: *70189061461960
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &70117439060540 !ruby/object:Gem::Requirement
27
+ requirement: &70189061461180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.10'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70117439060540
35
+ version_requirements: *70189061461180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yard
38
- requirement: &70117439059380 !ruby/object:Gem::Requirement
38
+ requirement: &70189061460620 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0.7'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70117439059380
46
+ version_requirements: *70189061460620
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdiscount
49
- requirement: &70117439058140 !ruby/object:Gem::Requirement
49
+ requirement: &70189061459960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '1.6'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70117439058140
57
+ version_requirements: *70189061459960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: webmock
60
- requirement: &70117439056760 !ruby/object:Gem::Requirement
60
+ requirement: &70189061459240 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.7'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70117439056760
68
+ version_requirements: *70189061459240
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &70117439055600 !ruby/object:Gem::Requirement
71
+ requirement: &70189061458820 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70117439055600
79
+ version_requirements: *70189061458820
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rack
82
- requirement: &70117439051980 !ruby/object:Gem::Requirement
82
+ requirement: &70189061458100 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '1.3'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70117439051980
90
+ version_requirements: *70189061458100
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: hipchat-api
93
- requirement: &70117439050780 !ruby/object:Gem::Requirement
93
+ requirement: &70189061457340 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '1.0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *70117439050780
101
+ version_requirements: *70189061457340
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: mustache
104
- requirement: &70117439049500 !ruby/object:Gem::Requirement
104
+ requirement: &70189061456700 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0.99'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *70117439049500
112
+ version_requirements: *70189061456700
113
113
  description: Funnels email into HipChat using CloudMailIn
114
114
  email:
115
115
  - gabriel@gironda.org
@@ -158,12 +158,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
158
  - - ! '>='
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
+ segments:
162
+ - 0
163
+ hash: -429079503967121235
161
164
  required_rubygems_version: !ruby/object:Gem::Requirement
162
165
  none: false
163
166
  requirements:
164
167
  - - ! '>='
165
168
  - !ruby/object:Gem::Version
166
169
  version: '0'
170
+ segments:
171
+ - 0
172
+ hash: -429079503967121235
167
173
  requirements: []
168
174
  rubyforge_project: mail_to_hip_chat
169
175
  rubygems_version: 1.8.10