hoptoad_notifier 2.2.6 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +12 -0
- data/SUPPORTED_RAILS_VERSIONS +1 -1
- data/generators/hoptoad/hoptoad_generator.rb +15 -6
- data/generators/hoptoad/templates/initializer.rb +1 -1
- data/lib/hoptoad_notifier/version.rb +1 -1
- data/lib/hoptoad_tasks.rb +8 -1
- data/lib/rails/generators/hoptoad/hoptoad_generator.rb +9 -4
- data/test/hoptoad_tasks_test.rb +26 -12
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
Version 2.3.0 - 2010-06-24
|
2
|
+
===============================================================================
|
3
|
+
|
4
|
+
Jason Morrison (5):
|
5
|
+
Add integration test for rails 3.0.0.beta4
|
6
|
+
Added feature: Support the Heroku addon in the generator
|
7
|
+
Add --heroku flag to generator to support ENV['HOPTOAD_API_KEY']
|
8
|
+
Reflect a copy change in rails.feature for --heroku generator flag
|
9
|
+
Support the proxy configuration options when notifying Hoptoad of a deploy (hat tip @gudleik)
|
10
|
+
|
11
|
+
|
1
12
|
Version 2.2.6 - 2010-06-02
|
2
13
|
===============================================================================
|
3
14
|
|
@@ -147,3 +158,4 @@ Nick Quaranto (3):
|
|
147
158
|
|
148
159
|
|
149
160
|
|
161
|
+
|
data/SUPPORTED_RAILS_VERSIONS
CHANGED
@@ -3,12 +3,13 @@ require File.expand_path(File.dirname(__FILE__) + "/lib/rake_commands.rb")
|
|
3
3
|
|
4
4
|
class HoptoadGenerator < Rails::Generator::Base
|
5
5
|
def add_options!(opt)
|
6
|
-
opt.on('-k', '--api-key=key', String, "Your Hoptoad API key")
|
6
|
+
opt.on('-k', '--api-key=key', String, "Your Hoptoad API key") {|v| options[:api_key] = v}
|
7
|
+
opt.on('-h', '--heroku', "Use the Heroku addon to provide your Hoptoad API key") {|v| options[:heroku] = v}
|
7
8
|
end
|
8
9
|
|
9
10
|
def manifest
|
10
|
-
if !api_key_configured? && !options[:api_key]
|
11
|
-
puts "Must pass --api-key or create config/initializers/hoptoad.rb"
|
11
|
+
if !api_key_configured? && !options[:api_key] && !options[:heroku]
|
12
|
+
puts "Must pass --api-key or --heroku or create config/initializers/hoptoad.rb"
|
12
13
|
exit
|
13
14
|
end
|
14
15
|
if plugin_is_present?
|
@@ -21,13 +22,13 @@ class HoptoadGenerator < Rails::Generator::Base
|
|
21
22
|
if ['config/deploy.rb', 'Capfile'].all? { |file| File.exists?(file) }
|
22
23
|
m.append_to 'config/deploy.rb', capistrano_hook
|
23
24
|
end
|
24
|
-
if
|
25
|
+
if api_key_expression
|
25
26
|
if use_initializer?
|
26
27
|
m.template 'initializer.rb', 'config/initializers/hoptoad.rb',
|
27
|
-
:assigns => {:api_key =>
|
28
|
+
:assigns => {:api_key => api_key_expression}
|
28
29
|
else
|
29
30
|
m.template 'initializer.rb', 'config/hoptoad.rb',
|
30
|
-
:assigns => {:api_key =>
|
31
|
+
:assigns => {:api_key => api_key_expression}
|
31
32
|
m.append_to 'config/environment.rb', "require 'config/hoptoad'"
|
32
33
|
end
|
33
34
|
end
|
@@ -35,6 +36,14 @@ class HoptoadGenerator < Rails::Generator::Base
|
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
39
|
+
def api_key_expression
|
40
|
+
s = if options[:api_key]
|
41
|
+
"'#{options[:api_key]}'"
|
42
|
+
elsif options[:heroku]
|
43
|
+
"ENV['HOPTOAD_API_KEY']"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
38
47
|
def use_initializer?
|
39
48
|
Rails::VERSION::MAJOR > 1
|
40
49
|
end
|
data/lib/hoptoad_tasks.rb
CHANGED
@@ -29,7 +29,14 @@ module HoptoadTasks
|
|
29
29
|
opts.each {|k,v| params["deploy[#{k}]"] = v }
|
30
30
|
|
31
31
|
url = URI.parse("http://#{HoptoadNotifier.configuration.host || 'hoptoadapp.com'}/deploys.txt")
|
32
|
-
|
32
|
+
|
33
|
+
proxy = Net::HTTP.Proxy(HoptoadNotifier.configuration.proxy_host,
|
34
|
+
HoptoadNotifier.configuration.proxy_port,
|
35
|
+
HoptoadNotifier.configuration.proxy_user,
|
36
|
+
HoptoadNotifier.configuration.proxy_pass)
|
37
|
+
|
38
|
+
response = proxy.post_form(url, params)
|
39
|
+
|
33
40
|
puts response.body
|
34
41
|
return Net::HTTPSuccess === response
|
35
42
|
end
|
@@ -3,6 +3,7 @@ require 'rails/generators'
|
|
3
3
|
class HoptoadGenerator < Rails::Generators::Base
|
4
4
|
|
5
5
|
class_option :api_key, :aliases => "-k", :type => :string, :desc => "Your Hoptoad API key"
|
6
|
+
class_option :heroku, :type => :boolean, :desc => "Use the Heroku addon to provide your Hoptoad API key"
|
6
7
|
|
7
8
|
def self.source_root
|
8
9
|
@_hoptoad_source_root ||= File.expand_path("../../../../../generators/hoptoad/templates", __FILE__)
|
@@ -19,8 +20,8 @@ class HoptoadGenerator < Rails::Generators::Base
|
|
19
20
|
private
|
20
21
|
|
21
22
|
def ensure_api_key_was_configured
|
22
|
-
if !options[:api_key] && !api_key_configured?
|
23
|
-
puts "Must pass --api-key or create config/initializers/hoptoad.rb"
|
23
|
+
if !options[:api_key] && !options[:heroku] && !api_key_configured?
|
24
|
+
puts "Must pass --api-key or --heroku or create config/initializers/hoptoad.rb"
|
24
25
|
exit
|
25
26
|
end
|
26
27
|
end
|
@@ -42,8 +43,12 @@ class HoptoadGenerator < Rails::Generators::Base
|
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
45
|
-
def
|
46
|
-
options[:api_key]
|
46
|
+
def api_key_expression
|
47
|
+
s = if options[:api_key]
|
48
|
+
"'#{options[:api_key]}'"
|
49
|
+
elsif options[:heroku]
|
50
|
+
"ENV['HOPTOAD_API_KEY']"
|
51
|
+
end
|
47
52
|
end
|
48
53
|
|
49
54
|
def generate_initializer
|
data/test/hoptoad_tasks_test.rb
CHANGED
@@ -37,25 +37,39 @@ class HoptoadTasksTest < Test::Unit::TestCase
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
context "given valid options" do
|
41
|
-
setup
|
40
|
+
context "given an optional HTTP proxy and valid options" do
|
41
|
+
setup do
|
42
|
+
@response = stub("response", :body => "stub body")
|
43
|
+
@http_proxy = stub("proxy", :post_form => @response)
|
44
|
+
|
45
|
+
Net::HTTP.expects(:Proxy).
|
46
|
+
with(HoptoadNotifier.configuration.proxy_host,
|
47
|
+
HoptoadNotifier.configuration.proxy_port,
|
48
|
+
HoptoadNotifier.configuration.proxy_user,
|
49
|
+
HoptoadNotifier.configuration.proxy_pass).
|
50
|
+
returns(@http_proxy)
|
51
|
+
|
52
|
+
@options = { :rails_env => "staging" }
|
53
|
+
end
|
42
54
|
|
43
55
|
context "on deploy(options)" do
|
44
|
-
setup
|
56
|
+
setup do
|
57
|
+
@output = HoptoadTasks.deploy(@options)
|
58
|
+
end
|
45
59
|
|
46
60
|
before_should "post to http://hoptoadapp.com/deploys.txt" do
|
47
61
|
URI.stubs(:parse).with('http://hoptoadapp.com/deploys.txt').returns(:uri)
|
48
|
-
|
62
|
+
@http_proxy.expects(:post_form).with(:uri, kind_of(Hash)).returns(successful_response)
|
49
63
|
end
|
50
64
|
|
51
65
|
before_should "use the project api key" do
|
52
|
-
|
66
|
+
@http_proxy.expects(:post_form).
|
53
67
|
with(kind_of(URI), has_entries('api_key' => "1234123412341234")).
|
54
68
|
returns(successful_response)
|
55
69
|
end
|
56
70
|
|
57
71
|
before_should "use send the rails_env param" do
|
58
|
-
|
72
|
+
@http_proxy.expects(:post_form).
|
59
73
|
with(kind_of(URI), has_entries("deploy[rails_env]" => "staging")).
|
60
74
|
returns(successful_response)
|
61
75
|
end
|
@@ -63,7 +77,7 @@ class HoptoadTasksTest < Test::Unit::TestCase
|
|
63
77
|
[:local_username, :scm_repository, :scm_revision].each do |key|
|
64
78
|
before_should "use send the #{key} param if it's passed in." do
|
65
79
|
@options[key] = "value"
|
66
|
-
|
80
|
+
@http_proxy.expects(:post_form).
|
67
81
|
with(kind_of(URI), has_entries("deploy[#{key}]" => "value")).
|
68
82
|
returns(successful_response)
|
69
83
|
end
|
@@ -71,29 +85,29 @@ class HoptoadTasksTest < Test::Unit::TestCase
|
|
71
85
|
|
72
86
|
before_should "use the :api_key param if it's passed in." do
|
73
87
|
@options[:api_key] = "value"
|
74
|
-
|
88
|
+
@http_proxy.expects(:post_form).
|
75
89
|
with(kind_of(URI), has_entries("api_key" => "value")).
|
76
90
|
returns(successful_response)
|
77
91
|
end
|
78
92
|
|
79
93
|
before_should "puts the response body on success" do
|
80
94
|
HoptoadTasks.expects(:puts).with("body")
|
81
|
-
|
95
|
+
@http_proxy.expects(:post_form).with(any_parameters).returns(successful_response('body'))
|
82
96
|
end
|
83
97
|
|
84
98
|
before_should "puts the response body on failure" do
|
85
99
|
HoptoadTasks.expects(:puts).with("body")
|
86
|
-
|
100
|
+
@http_proxy.expects(:post_form).with(any_parameters).returns(unsuccessful_response('body'))
|
87
101
|
end
|
88
102
|
|
89
103
|
should "return false on failure", :before => lambda {
|
90
|
-
|
104
|
+
@http_proxy.expects(:post_form).with(any_parameters).returns(unsuccessful_response('body'))
|
91
105
|
} do
|
92
106
|
assert !@output
|
93
107
|
end
|
94
108
|
|
95
109
|
should "return true on success", :before => lambda {
|
96
|
-
|
110
|
+
@http_proxy.expects(:post_form).with(any_parameters).returns(successful_response('body'))
|
97
111
|
} do
|
98
112
|
assert @output
|
99
113
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 2
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 2.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 2.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- thoughtbot, inc
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-24 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|