simple_deploy 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +6 -0
- data/README.md +4 -0
- data/Rakefile +9 -0
- data/lib/simple_deploy/cli/deploy.rb +11 -5
- data/lib/simple_deploy/cli.rb +3 -7
- data/lib/simple_deploy/config.rb +4 -0
- data/lib/simple_deploy/logger.rb +18 -27
- data/lib/simple_deploy/notifier/campfire.rb +41 -0
- data/lib/simple_deploy/notifier.rb +50 -0
- data/lib/simple_deploy/stack/deployment.rb +1 -1
- data/lib/simple_deploy/stack/stack_reader.rb +1 -0
- data/lib/simple_deploy/version.rb +1 -1
- data/lib/simple_deploy.rb +1 -0
- data/simple_deploy.gemspec +2 -1
- data/spec/config_spec.rb +1 -1
- data/spec/notifier/campfire_spec.rb +96 -0
- data/spec/notifier_spec.rb +58 -0
- metadata +30 -13
data/CHANGELOG
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -22,23 +22,29 @@ EOS
|
|
22
22
|
:default => 'info'
|
23
23
|
opt :name, "Stack name(s) of stack to deploy", :type => :string,
|
24
24
|
:multi => true
|
25
|
+
opt :quiet, "Quiet, do not send notifications"
|
25
26
|
end
|
26
27
|
|
27
28
|
CLI::Shared.valid_options? :provided => opts,
|
28
29
|
:required => [:environment, :name]
|
29
30
|
|
30
|
-
config = Config.new.environment opts[:environment]
|
31
31
|
logger = SimpleDeployLogger.new :log_level => opts[:log_level]
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
new_attributes = CLI::Shared.parse_attributes :attributes => opts[:attributes],
|
34
|
+
:logger => logger
|
35
35
|
opts[:name].each do |name|
|
36
|
+
notifier = Notifier.new :stack_name => name,
|
37
|
+
:environment => opts[:environment],
|
38
|
+
:logger => logger
|
39
|
+
|
36
40
|
stack = Stack.new :environment => opts[:environment],
|
37
41
|
:name => name,
|
38
|
-
:config => config,
|
39
42
|
:logger => logger
|
40
|
-
|
43
|
+
|
44
|
+
stack.update(:attributes => new_attributes) if new_attributes.any?
|
41
45
|
stack.deploy opts[:force]
|
46
|
+
|
47
|
+
notifier.send_deployment_complete_message unless opts[:quiet]
|
42
48
|
end
|
43
49
|
end
|
44
50
|
end
|
data/lib/simple_deploy/cli.rb
CHANGED
@@ -22,11 +22,6 @@ module SimpleDeploy
|
|
22
22
|
def self.start
|
23
23
|
cmd = ARGV.shift
|
24
24
|
|
25
|
-
unless cmd
|
26
|
-
puts "\nPlease specify a command.\n"
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
|
30
25
|
case cmd
|
31
26
|
when 'attributes'
|
32
27
|
CLI::Attributes.new.show
|
@@ -59,12 +54,13 @@ module SimpleDeploy
|
|
59
54
|
when 'update'
|
60
55
|
CLI::Update.new.update
|
61
56
|
when '-h'
|
62
|
-
puts "simple_deploy [attributes|create|destroy|environments|events|instances|list|template|outputs|parameters|resources|ssh|status|update]"
|
57
|
+
puts "simple_deploy [attributes|create|destroy|environments|events|instances|list|template|outputs|parameters|resources|ssh|status|update] [options]"
|
63
58
|
puts "Append -h for help on specific subcommand."
|
64
59
|
else
|
65
60
|
puts "Unknown command: '#{cmd}'."
|
66
|
-
puts "simple_deploy [attributes|create|destroy|environments|events|instances|list|template|outputs|parameters|resources|ssh|status|update]"
|
61
|
+
puts "simple_deploy [attributes|create|destroy|environments|events|instances|list|template|outputs|parameters|resources|ssh|status|update] [options]"
|
67
62
|
puts "Append -h for help on specific subcommand."
|
63
|
+
exit 1
|
68
64
|
end
|
69
65
|
end
|
70
66
|
|
data/lib/simple_deploy/config.rb
CHANGED
data/lib/simple_deploy/logger.rb
CHANGED
@@ -1,40 +1,31 @@
|
|
1
1
|
module SimpleDeploy
|
2
2
|
class SimpleDeployLogger
|
3
|
-
|
3
|
+
|
4
|
+
require 'forwardable'
|
5
|
+
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
def_delegators :@logger, :debug, :error, :info, :warn
|
9
|
+
|
4
10
|
def initialize(args = {})
|
5
|
-
@logger = args[:logger] ||= Logger.new(STDOUT)
|
6
11
|
@log_level = args[:log_level] ||= 'info'
|
12
|
+
@logger = args[:logger] ||= new_logger(args)
|
13
|
+
end
|
7
14
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
15
|
+
private
|
16
|
+
def new_logger(args)
|
17
|
+
Logger.new(STDOUT).tap do |l|
|
18
|
+
l.datetime_format = '%Y-%m-%dT%H:%M:%S%z'
|
19
|
+
l.formatter = proc do |severity, datetime, progname, msg|
|
20
|
+
"#{datetime} #{severity} : #{msg}\n"
|
12
21
|
end
|
22
|
+
l.level = logger_level
|
13
23
|
end
|
14
|
-
|
15
|
-
case @log_level.downcase
|
16
|
-
when 'info'
|
17
|
-
@logger.level = Logger::INFO
|
18
|
-
when 'debug'
|
19
|
-
@logger.level = Logger::DEBUG
|
20
|
-
when 'warn'
|
21
|
-
@logger.level = Logger::WARN
|
22
|
-
when 'error'
|
23
|
-
@logger.level = Logger::ERROR
|
24
|
-
end
|
25
|
-
@logger
|
26
24
|
end
|
27
25
|
|
28
|
-
def
|
29
|
-
@
|
26
|
+
def logger_level
|
27
|
+
Logger.const_get @log_level.upcase
|
30
28
|
end
|
31
29
|
|
32
|
-
def info(msg)
|
33
|
-
@logger.info msg
|
34
|
-
end
|
35
|
-
|
36
|
-
def error(msg)
|
37
|
-
@logger.error msg
|
38
|
-
end
|
39
30
|
end
|
40
31
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'tinder'
|
2
|
+
|
3
|
+
module SimpleDeploy
|
4
|
+
class Notifier
|
5
|
+
class Campfire
|
6
|
+
|
7
|
+
def initialize(args)
|
8
|
+
@stack_name = args[:stack_name]
|
9
|
+
@environment = args[:environment]
|
10
|
+
@config = args[:config]
|
11
|
+
@logger = @config.logger
|
12
|
+
|
13
|
+
attributes = stack.attributes
|
14
|
+
@subdomain = attributes['campfire_subdomain']
|
15
|
+
@room_ids = attributes['campfire_room_ids'] ||= ''
|
16
|
+
@logger.debug "Campfire subdomain '#{@subdomain}'."
|
17
|
+
@logger.debug "Campfire room ids '#{@room_ids}'."
|
18
|
+
@token = @config.notifications['campfire']['token']
|
19
|
+
@campfire = Tinder::Campfire.new @subdomain, :token => @token
|
20
|
+
end
|
21
|
+
|
22
|
+
def send(message)
|
23
|
+
@room_ids.split(',').each do |room_id|
|
24
|
+
@logger.debug "Sending notification to Campfire room #{room_id}."
|
25
|
+
room = @campfire.find_room_by_id room_id.to_i
|
26
|
+
room.speak message
|
27
|
+
end
|
28
|
+
@logger.debug "Campfire notifications complete."
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def stack
|
34
|
+
@stack ||= Stackster::Stack.new :environment => @environment,
|
35
|
+
:name => @stack_name,
|
36
|
+
:config => @config.environment(@environment),
|
37
|
+
:logger => @logger
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'simple_deploy/notifier/campfire'
|
2
|
+
|
3
|
+
module SimpleDeploy
|
4
|
+
class Notifier
|
5
|
+
def initialize(args)
|
6
|
+
@stack_name = args[:stack_name]
|
7
|
+
@environment = args[:environment]
|
8
|
+
@config = Config.new :logger => args[:logger]
|
9
|
+
@logger = @config.logger
|
10
|
+
@notifications = @config.notifications
|
11
|
+
end
|
12
|
+
|
13
|
+
def send_deployment_complete_message
|
14
|
+
message = "Deployment to #{@stack_name} complete."
|
15
|
+
attributes = stack.attributes
|
16
|
+
|
17
|
+
if attributes['app_github_url']
|
18
|
+
message += " App: #{attributes['app_github_url']}/commit/#{attributes['app']}"
|
19
|
+
end
|
20
|
+
|
21
|
+
if attributes['chef_repo_github_url']
|
22
|
+
message += " Chef: #{attributes['chef_repo_github_url']}/commit/#{attributes['chef_repo']}"
|
23
|
+
end
|
24
|
+
|
25
|
+
send message
|
26
|
+
end
|
27
|
+
|
28
|
+
def send(message)
|
29
|
+
@notifications.keys.each do |notification|
|
30
|
+
case notification
|
31
|
+
when 'campfire'
|
32
|
+
campfire = Notifier::Campfire.new :stack_name => @stack_name,
|
33
|
+
:environment => @environment,
|
34
|
+
:config => @config
|
35
|
+
campfire.send message
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def stack
|
43
|
+
@stack ||= Stackster::Stack.new :environment => @environment,
|
44
|
+
:name => @stack_name,
|
45
|
+
:config => @config.environment(@environment),
|
46
|
+
:logger => @logger
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/lib/simple_deploy.rb
CHANGED
data/simple_deploy.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_development_dependency "rspec"
|
22
22
|
|
23
23
|
s.add_runtime_dependency "capistrano"
|
24
|
-
s.add_runtime_dependency "stackster", '= 0.2.
|
24
|
+
s.add_runtime_dependency "stackster", '= 0.2.8'
|
25
|
+
s.add_runtime_dependency "tinder"
|
25
26
|
s.add_runtime_dependency "trollop"
|
26
27
|
end
|
data/spec/config_spec.rb
CHANGED
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SimpleDeploy do
|
4
|
+
|
5
|
+
describe "with all required configurations" do
|
6
|
+
before do
|
7
|
+
config = { 'campfire' => { 'token' => 'tkn' } }
|
8
|
+
|
9
|
+
@config_mock = mock 'config mock'
|
10
|
+
@stack_mock = mock 'stack'
|
11
|
+
@logger_mock = mock 'logger mock'
|
12
|
+
@tinder_mock = mock 'tinder'
|
13
|
+
@config_mock.should_receive(:logger).and_return @logger_mock
|
14
|
+
@config_mock.should_receive(:notifications).and_return config
|
15
|
+
@config_mock.should_receive(:environment).and_return 'env_config'
|
16
|
+
Stackster::Stack.should_receive(:new).
|
17
|
+
with(:environment => 'test',
|
18
|
+
:name => 'stack_name',
|
19
|
+
:config => 'env_config',
|
20
|
+
:logger => @logger_mock).
|
21
|
+
and_return @stack_mock
|
22
|
+
|
23
|
+
Tinder::Campfire.should_receive(:new).
|
24
|
+
with('subdom', :token => 'tkn').and_return @tinder_mock
|
25
|
+
@stack_mock.should_receive(:attributes).
|
26
|
+
and_return( 'campfire_room_ids' => '1,2',
|
27
|
+
'campfire_subdomain' => 'subdom' )
|
28
|
+
@logger_mock.should_receive(:debug).
|
29
|
+
with "Campfire subdomain 'subdom'."
|
30
|
+
@logger_mock.should_receive(:debug).
|
31
|
+
with "Campfire room ids '1,2'."
|
32
|
+
@campfire = SimpleDeploy::Notifier::Campfire.new :stack_name => 'stack_name',
|
33
|
+
:environment => 'test',
|
34
|
+
:config => @config_mock
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should send a message to campfire rooms" do
|
39
|
+
room1_mock = mock 'tinder'
|
40
|
+
room2_mock = mock 'tinder'
|
41
|
+
@tinder_mock.should_receive(:find_room_by_id).with(1).
|
42
|
+
and_return room1_mock
|
43
|
+
@tinder_mock.should_receive(:find_room_by_id).with(2).
|
44
|
+
and_return room2_mock
|
45
|
+
@logger_mock.should_receive(:debug).
|
46
|
+
with "Sending notification to Campfire room 1."
|
47
|
+
@logger_mock.should_receive(:debug).
|
48
|
+
with "Sending notification to Campfire room 2."
|
49
|
+
@logger_mock.should_receive(:debug).
|
50
|
+
with "Campfire notifications complete."
|
51
|
+
room1_mock.should_receive(:speak).with :message => "heh you guys!"
|
52
|
+
room2_mock.should_receive(:speak).with :message => "heh you guys!"
|
53
|
+
@campfire.send(:message => 'heh you guys!')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "without valid attributes" do
|
58
|
+
before do
|
59
|
+
config = { 'campfire' => { 'token' => 'tkn' } }
|
60
|
+
|
61
|
+
@config_mock = mock 'config mock'
|
62
|
+
@stack_mock = mock 'stack'
|
63
|
+
@logger_mock = mock 'logger mock'
|
64
|
+
@tinder_mock = mock 'tinder'
|
65
|
+
@config_mock.should_receive(:logger).and_return @logger_mock
|
66
|
+
@config_mock.should_receive(:notifications).and_return config
|
67
|
+
@config_mock.should_receive(:environment).and_return 'env_config'
|
68
|
+
Stackster::Stack.should_receive(:new).
|
69
|
+
with(:environment => 'test',
|
70
|
+
:name => 'stack_name',
|
71
|
+
:config => 'env_config',
|
72
|
+
:logger => @logger_mock).
|
73
|
+
and_return @stack_mock
|
74
|
+
|
75
|
+
Tinder::Campfire.should_receive(:new).
|
76
|
+
with(nil, :token => 'tkn').and_return @tinder_mock
|
77
|
+
@stack_mock.should_receive(:attributes).
|
78
|
+
and_return({})
|
79
|
+
@logger_mock.should_receive(:debug).
|
80
|
+
with "Campfire subdomain ''."
|
81
|
+
@logger_mock.should_receive(:debug).
|
82
|
+
with "Campfire room ids ''."
|
83
|
+
@logger_mock.should_receive(:debug).
|
84
|
+
with "Campfire notifications complete."
|
85
|
+
@campfire = SimpleDeploy::Notifier::Campfire.new :stack_name => 'stack_name',
|
86
|
+
:environment => 'test',
|
87
|
+
:config => @config_mock
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should not blow up if campfire_subdom & campfire_room_ids are not present" do
|
91
|
+
@campfire.send(:message => 'heh you guys!')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SimpleDeploy do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@config_mock = mock 'config mock'
|
7
|
+
@logger_mock = mock 'logger mock'
|
8
|
+
SimpleDeploy::Config.should_receive(:new).
|
9
|
+
with(:logger => @logger_mock).
|
10
|
+
and_return @config_mock
|
11
|
+
|
12
|
+
@config_mock.should_receive(:notifications).
|
13
|
+
and_return({ 'campfire' => 'settings' })
|
14
|
+
@config_mock.should_receive(:logger).
|
15
|
+
and_return @logger_mock
|
16
|
+
@notifier = SimpleDeploy::Notifier.new :stack_name => 'stack_name',
|
17
|
+
:environment => 'test',
|
18
|
+
:logger => @logger_mock
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should include the github app & chef links if attributes present" do
|
22
|
+
stack_mock = mock 'stack'
|
23
|
+
campfire_mock = mock 'campfire mock'
|
24
|
+
environment_mock = mock 'environment mock'
|
25
|
+
@config_mock.should_receive(:environment).
|
26
|
+
with('test').
|
27
|
+
and_return environment_mock
|
28
|
+
Stackster::Stack.should_receive(:new).
|
29
|
+
with(:environment => 'test',
|
30
|
+
:name => 'stack_name',
|
31
|
+
:config => environment_mock,
|
32
|
+
:logger => @logger_mock).
|
33
|
+
and_return stack_mock
|
34
|
+
stack_mock.should_receive(:attributes).
|
35
|
+
and_return({ 'app_github_url' => 'http://github.com/user/app',
|
36
|
+
'chef_repo_github_url' => 'http://github.com/user/chef_repo',
|
37
|
+
'app' => 'appsha',
|
38
|
+
'chef_repo' => 'chefsha' })
|
39
|
+
SimpleDeploy::Notifier::Campfire.should_receive(:new).
|
40
|
+
and_return campfire_mock
|
41
|
+
campfire_mock.should_receive(:send).
|
42
|
+
with "Deployment to stack_name complete. App: http://github.com/user/app/commit/appsha Chef: http://github.com/user/chef_repo/commit/chefsha"
|
43
|
+
@notifier.send_deployment_complete_message
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should send a message to each listed notification endpoint" do
|
47
|
+
campfire_mock = mock 'campfire mock'
|
48
|
+
SimpleDeploy::Notifier::Campfire.should_receive(:new).
|
49
|
+
with(:environment => 'test',
|
50
|
+
:stack_name => 'stack_name',
|
51
|
+
:config => @config_mock).
|
52
|
+
and_return campfire_mock
|
53
|
+
campfire_mock.should_receive(:send).with 'heh you guys!'
|
54
|
+
@notifier.send 'heh you guys!'
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70145775467200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70145775467200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capistrano
|
27
|
-
requirement: &
|
27
|
+
requirement: &70145775465720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,21 +32,32 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70145775465720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: stackster
|
38
|
-
requirement: &
|
38
|
+
requirement: &70145775463980 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - =
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.2.
|
43
|
+
version: 0.2.8
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70145775463980
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: tinder
|
49
|
+
requirement: &70145775444140 !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: *70145775444140
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: trollop
|
49
|
-
requirement: &
|
60
|
+
requirement: &70145775441180 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
@@ -54,7 +65,7 @@ dependencies:
|
|
54
65
|
version: '0'
|
55
66
|
type: :runtime
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70145775441180
|
58
69
|
description: I am designed to deploy artifacts uploaded by Heirloom
|
59
70
|
email:
|
60
71
|
- brett@weav.net
|
@@ -91,6 +102,8 @@ files:
|
|
91
102
|
- lib/simple_deploy/cli/update.rb
|
92
103
|
- lib/simple_deploy/config.rb
|
93
104
|
- lib/simple_deploy/logger.rb
|
105
|
+
- lib/simple_deploy/notifier.rb
|
106
|
+
- lib/simple_deploy/notifier/campfire.rb
|
94
107
|
- lib/simple_deploy/stack.rb
|
95
108
|
- lib/simple_deploy/stack/deployment.rb
|
96
109
|
- lib/simple_deploy/stack/stack_attribute_formater.rb
|
@@ -100,6 +113,8 @@ files:
|
|
100
113
|
- script/ci_setup
|
101
114
|
- simple_deploy.gemspec
|
102
115
|
- spec/config_spec.rb
|
116
|
+
- spec/notifier/campfire_spec.rb
|
117
|
+
- spec/notifier_spec.rb
|
103
118
|
- spec/spec_helper.rb
|
104
119
|
homepage: ''
|
105
120
|
licenses: []
|
@@ -115,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
130
|
version: '0'
|
116
131
|
segments:
|
117
132
|
- 0
|
118
|
-
hash:
|
133
|
+
hash: 3053773763840016870
|
119
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
135
|
none: false
|
121
136
|
requirements:
|
@@ -124,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
139
|
version: '0'
|
125
140
|
segments:
|
126
141
|
- 0
|
127
|
-
hash:
|
142
|
+
hash: 3053773763840016870
|
128
143
|
requirements: []
|
129
144
|
rubyforge_project: simple_deploy
|
130
145
|
rubygems_version: 1.8.16
|
@@ -133,4 +148,6 @@ specification_version: 3
|
|
133
148
|
summary: I help with deployments
|
134
149
|
test_files:
|
135
150
|
- spec/config_spec.rb
|
151
|
+
- spec/notifier/campfire_spec.rb
|
152
|
+
- spec/notifier_spec.rb
|
136
153
|
- spec/spec_helper.rb
|