slack_messaging 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.markdown +3 -0
- data/README.md +35 -7
- data/lib/slack_messaging/config.rb +7 -50
- data/lib/slack_messaging/version.rb +1 -1
- data/spec/slack_messaging/config_spec.rb +4 -23
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d78f53c59095f17ce3bd0f2a19de2d1cd933cecf
|
4
|
+
data.tar.gz: f4cb1ea1c452a4a8f39e96fb1ee46bf58cf24f07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 315fe8c28b86d74563ce09ea49662df5e0e2ca050b242398a59c221c964e7c48de2277315f0e12b4fcecd0e984eb2b4cf57c107e51532c14564f1ef8be156bbd
|
7
|
+
data.tar.gz: dcd20a21275cc88abb808c2581bb08f9f591b5e00f401dc6ddf1fc81f1b11131f8c883cc691494aabeefffaf632e7bc55492cd449ed668caaa2d1733e12c4aef
|
data/CHANGELOG.markdown
CHANGED
data/README.md
CHANGED
@@ -2,16 +2,25 @@
|
|
2
2
|
|
3
3
|
This is a simple project designed to post messages to a given Slack channel as a bot.
|
4
4
|
|
5
|
-
|
5
|
+
## Installation
|
6
6
|
|
7
|
-
|
7
|
+
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
+
```ruby
|
10
|
+
gem 'slack_messaging'
|
9
11
|
```
|
10
|
-
gem install bundler
|
11
|
-
bundle install
|
12
|
-
```
|
13
12
|
|
14
|
-
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install slack_messaging
|
20
|
+
|
21
|
+
### Usage
|
22
|
+
|
23
|
+
This project requires a config file that should look like this:
|
15
24
|
|
16
25
|
```
|
17
26
|
slack:
|
@@ -21,9 +30,13 @@ slack:
|
|
21
30
|
icon_emoji: ":[SOME EMOJI]:"
|
22
31
|
```
|
23
32
|
|
33
|
+
The default is for the file to be named `~/.slack_messaging.yml`, but a different path can be passed in like this:
|
34
|
+
|
35
|
+
$ slack-messaging --config="/PATH/TO/FILE/config.yml" slack
|
36
|
+
|
24
37
|
To obtain the webhook url, go to [this link](https://api.slack.com/incoming-webhooks).
|
25
38
|
|
26
|
-
Okay, now the project will
|
39
|
+
Okay, now the project will be ready to rock and roll.
|
27
40
|
|
28
41
|
To print a friendly message to Slack, run:
|
29
42
|
|
@@ -62,3 +75,18 @@ To contribute:
|
|
62
75
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
63
76
|
4. Push to the branch (`git push origin my-new-feature`)
|
64
77
|
5. Create a new Pull Request
|
78
|
+
|
79
|
+
### RubyGems
|
80
|
+
To make a new version and push to RubyGems:
|
81
|
+
|
82
|
+
1. Update the CHANGELOG.markdown with the new version and changes made
|
83
|
+
|
84
|
+
3. Run `git add -A && git commit -m "Updating Changelog for [version number]"`
|
85
|
+
|
86
|
+
2. Update `lib/slack_messaging/version.rb` with the new version number
|
87
|
+
|
88
|
+
4. Run `git add -A && git commit -m "Version Bump" && git push`
|
89
|
+
|
90
|
+
5. Run `gem build slack_messaging.gemspec && gem push *.gem`
|
91
|
+
|
92
|
+
6. Run `rm *.gem`
|
@@ -1,14 +1,8 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'hashie'
|
2
3
|
|
3
4
|
module SlackMessaging
|
4
5
|
|
5
|
-
module PrivateAttrAccessor
|
6
|
-
def private_attr_accessor(*names)
|
7
|
-
private
|
8
|
-
attr_accessor *names
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
6
|
class DefaultPaths
|
13
7
|
class << self
|
14
8
|
def config
|
@@ -22,15 +16,10 @@ module SlackMessaging
|
|
22
16
|
end
|
23
17
|
|
24
18
|
class Config
|
25
|
-
|
26
|
-
CONFIG_DEFAULTS = {}
|
27
|
-
|
28
19
|
class << self
|
29
|
-
extend PrivateAttrAccessor
|
30
|
-
private_attr_accessor :config_data
|
31
20
|
|
32
21
|
def config
|
33
|
-
|
22
|
+
config_data.to_hash
|
34
23
|
end
|
35
24
|
|
36
25
|
def load(path)
|
@@ -38,54 +27,22 @@ module SlackMessaging
|
|
38
27
|
config
|
39
28
|
end
|
40
29
|
|
41
|
-
def
|
42
|
-
|
43
|
-
config
|
30
|
+
def config_data
|
31
|
+
@config_data ||= Hashie::Mash.new
|
44
32
|
end
|
45
|
-
|
46
|
-
def data
|
47
|
-
self.config_data ||= {}
|
48
|
-
end
|
49
|
-
private :data
|
50
|
-
|
51
|
-
def default_value(key)
|
52
|
-
CONFIG_DEFAULTS[key.to_sym]
|
53
|
-
end
|
54
|
-
private :default_value
|
33
|
+
private :config_data
|
55
34
|
|
56
35
|
def method_missing(method, args=false)
|
57
|
-
|
58
|
-
return default_value(method) if default_value(method)
|
59
|
-
nil
|
36
|
+
config_data.send(method, args)
|
60
37
|
end
|
61
38
|
private :method_missing
|
62
39
|
|
63
40
|
def load_config(file)
|
64
41
|
raise MissingConfig, "Missing configuration file: #{file}" unless File.exist?(file)
|
65
|
-
|
42
|
+
YAML.load_file(file).each{ |key,value| config_data.assign_property(key, value) }
|
66
43
|
end
|
67
44
|
private :load_config
|
68
45
|
|
69
|
-
# We want all ouf our YAML loaded keys to be symbols
|
70
|
-
# taken from http://devblog.avdi.org/2009/07/14/recursively-symbolize-keys/
|
71
|
-
def symbolize_keys(hash)
|
72
|
-
hash.inject({}){|result, (key, value)|
|
73
|
-
new_key = case key
|
74
|
-
when String then key.to_sym
|
75
|
-
else key
|
76
|
-
end
|
77
|
-
new_value = case value
|
78
|
-
when Hash then symbolize_keys(value)
|
79
|
-
else value
|
80
|
-
end
|
81
|
-
result[new_key] = new_value
|
82
|
-
result
|
83
|
-
}
|
84
|
-
end
|
85
|
-
private :symbolize_keys
|
86
|
-
|
87
46
|
end
|
88
|
-
|
89
|
-
MissingConfig = Class.new(StandardError)
|
90
47
|
end
|
91
48
|
end
|
@@ -4,32 +4,13 @@ require 'slack_messaging'
|
|
4
4
|
module SlackMessaging
|
5
5
|
describe Config do
|
6
6
|
|
7
|
-
context "#set_config_options" do
|
8
|
-
it "should create a corresponding method that returns the value" do
|
9
|
-
SlackMessaging::Config.set_config_options(test: "something")
|
10
|
-
expect(SlackMessaging::Config.test).to eql("something")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "setting a new key should return the entire config hash" do
|
14
|
-
items = SlackMessaging::Config.config.count
|
15
|
-
expect(SlackMessaging::Config.set_config_options(test1: "something_else").count).to eql(items + 1)
|
16
|
-
expect(SlackMessaging::Config.set_config_options(test2: "something else").count).to eql(items + 2)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "#config_data" do
|
21
|
-
it "should be a private method" do
|
22
|
-
expect(SlackMessaging::Config).not_to respond_to(:config_data)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
7
|
context "config key methods" do
|
27
8
|
it "should return nil when not set" do
|
28
9
|
expect(SlackMessaging::Config.doesnt_exist).to eql(nil)
|
10
|
+
expect(SlackMessaging::Config.doesnt_exist?).to eql(false)
|
29
11
|
end
|
30
|
-
|
31
12
|
it "should return the config value when set" do
|
32
|
-
SlackMessaging::Config.
|
13
|
+
SlackMessaging::Config.new_value = "testing"
|
33
14
|
expect(SlackMessaging::Config.new_value).to eql("testing")
|
34
15
|
end
|
35
16
|
end
|
@@ -37,7 +18,7 @@ module SlackMessaging
|
|
37
18
|
context "after loading a config file" do
|
38
19
|
before do
|
39
20
|
config_file = {"domain" => "example_domain",
|
40
|
-
"slack" => {"slack_option"=>true,
|
21
|
+
"slack" => {"slack_option" => true,
|
41
22
|
"username" => "Rspec Tester",
|
42
23
|
"icon_url" => "http://fake.url",
|
43
24
|
"channel" => "#test-channel",
|
@@ -55,7 +36,7 @@ module SlackMessaging
|
|
55
36
|
|
56
37
|
it "overwriting values should work" do
|
57
38
|
expect(SlackMessaging::Config.slack).to be_kind_of(Hash)
|
58
|
-
SlackMessaging::Config.
|
39
|
+
SlackMessaging::Config.slack = "this is a string now"
|
59
40
|
expect(SlackMessaging::Config.slack).to eql("this is a string now")
|
60
41
|
end
|
61
42
|
end
|