trackman 0.3.0 → 0.3.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/Gemfile.lock
CHANGED
@@ -7,26 +7,30 @@ module Trackman
|
|
7
7
|
@@TRACKMAN_ERROR = 'TRACKMAN_ERROR_PAGE_URL'
|
8
8
|
@@TRACKMAN_MAINTENANCE = 'TRACKMAN_MAINTENANCE_PAGE_URL'
|
9
9
|
|
10
|
-
attr_accessor :configs, :heroku_version
|
10
|
+
attr_accessor :configs, :heroku_version, :options
|
11
11
|
|
12
|
-
def initialize(
|
13
|
-
self.
|
14
|
-
|
12
|
+
def initialize(heroku_version, options = {})
|
13
|
+
self.options = options
|
14
|
+
self.heroku_version = heroku_version
|
15
|
+
self.configs = get_configs
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
-
unless is_heroku_valid
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
add_configs
|
23
|
-
puts "done! Thank you for using Trackman!"
|
24
|
-
end
|
18
|
+
def setup
|
19
|
+
raise SetupException, "Your heroku version is too low, trackman requires '~> 2.26'." unless is_heroku_valid
|
20
|
+
rename_configs
|
21
|
+
add_configs
|
22
|
+
puts "Done!"
|
25
23
|
end
|
26
24
|
|
27
|
-
|
28
|
-
|
25
|
+
def get_configs
|
26
|
+
result = run "heroku config -s" do |option|
|
27
|
+
"heroku config -s #{option}"
|
28
|
+
end
|
29
|
+
Trackman::ConfigurationHandler.s_to_h(result)
|
30
|
+
end
|
31
|
+
|
29
32
|
|
33
|
+
def add_configs
|
30
34
|
if configs.include?(@@TRACKMAN_ERROR) && configs.include?(@@TRACKMAN_MAINTENANCE)
|
31
35
|
trackman_configs = {}
|
32
36
|
[[@@TRACKMAN_ERROR, @@ERROR], [@@TRACKMAN_MAINTENANCE, @@MAINTENANCE]].each do |old_c, new_c|
|
@@ -36,7 +40,7 @@ module Trackman
|
|
36
40
|
add = trackman_configs.map{|k,v| "#{k}=#{v}" }.join(' ')
|
37
41
|
add_config add
|
38
42
|
else
|
39
|
-
raise SetupException, "
|
43
|
+
raise SetupException, "Can't find trackman configuration, make sure trackman addon is installed."
|
40
44
|
end
|
41
45
|
end
|
42
46
|
|
@@ -49,36 +53,45 @@ module Trackman
|
|
49
53
|
add = Hash[bkp.map {|k, v| [k + "_bkp", v] }].map{|k,v| "#{k}=#{v}" }.select{|c| !configs.include? c }.join(' ')
|
50
54
|
|
51
55
|
unless add.empty?
|
52
|
-
puts "backing configs to heroku..."
|
53
56
|
add_config add
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
60
|
+
def self.s_to_h configs
|
61
|
+
new_configs = {}
|
62
|
+
configs.split(" ").each do |a|
|
63
|
+
key_val = a.split("=")
|
64
|
+
new_configs[key_val[0]] = key_val[1]
|
65
|
+
end
|
66
|
+
new_configs
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.h_to_s configs
|
70
|
+
out = []
|
71
|
+
configs.each do |k,v|
|
72
|
+
out << k + "=" + v
|
73
|
+
end
|
74
|
+
out.join ' '
|
75
|
+
end
|
76
|
+
|
57
77
|
private
|
58
78
|
def is_heroku_valid
|
59
79
|
Versionomy.parse(heroku_version) >= Versionomy.parse("2.26.2")
|
60
80
|
end
|
61
81
|
|
62
82
|
def add_config add
|
63
|
-
|
83
|
+
run "heroku config:add #{add}" do |option|
|
84
|
+
"heroku config:add #{option} #{add}"
|
85
|
+
end
|
64
86
|
end
|
65
87
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.h_to_s configs
|
76
|
-
out = []
|
77
|
-
configs.each do |k,v|
|
78
|
-
out << k + "=" + v
|
79
|
-
end
|
80
|
-
out.join ' '
|
81
|
-
end
|
88
|
+
def run command
|
89
|
+
command = yield("--app #{options[:app]}") unless self.options[:app].nil?
|
90
|
+
puts "exec: #{command}"
|
91
|
+
result = `#{command}`
|
92
|
+
raise "An error occured running the last command." if $? != 0
|
93
|
+
result
|
94
|
+
end
|
82
95
|
end
|
83
96
|
|
84
97
|
class SetupException < Exception
|
data/lib/trackman/version.rb
CHANGED
@@ -9,9 +9,9 @@ namespace :trackman do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
desc "Sets up the heroku configs required by Trackman"
|
12
|
-
task :setup do
|
13
|
-
|
12
|
+
task :setup, :app do |t, args|
|
13
|
+
|
14
14
|
heroku_version = Gem.loaded_specs["heroku"].version.to_s
|
15
|
-
Trackman::ConfigurationHandler.new(
|
15
|
+
Trackman::ConfigurationHandler.new(heroku_version, app: args[:app]).setup
|
16
16
|
end
|
17
17
|
end
|
@@ -1,83 +1,88 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
class TestConfigurationHandler < Trackman::ConfigurationHandler
|
4
|
+
def get_configs
|
5
|
+
{
|
6
|
+
"TRACKMAN_MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8\"",
|
7
|
+
"TRACKMAN_URL" => "\"url\"",
|
8
|
+
"TRACKMAN_ERROR_PAGE_URL" => "\"error_page_url\"",
|
9
|
+
"SOME_CONFIG" => "\"url\""
|
10
|
+
}
|
11
|
+
end
|
12
|
+
attr_accessor :heroku_configs
|
13
|
+
|
14
|
+
def add_config add
|
15
|
+
self.heroku_configs = (heroku_configs || {}).merge(ConfigurationHandler.s_to_h(add))
|
12
16
|
end
|
13
17
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
"SOME_CONFIG" => "\"url\""
|
19
|
-
}
|
18
|
+
def run command
|
19
|
+
puts "exec: #{command}"
|
20
|
+
end
|
21
|
+
end
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
describe ConfigurationHandler do
|
24
|
+
before :each do
|
25
|
+
@config = TestConfigurationHandler.new "2.26.2"
|
26
|
+
end
|
24
27
|
|
28
|
+
it "creates heroku configs" do
|
29
|
+
|
30
|
+
@config.setup
|
31
|
+
|
32
|
+
config_hash = @config.heroku_configs
|
25
33
|
|
26
34
|
config_hash.should include("ERROR_PAGE_URL")
|
27
|
-
|
35
|
+
config_hash.should include("MAINTENANCE_PAGE_URL")
|
28
36
|
config_hash["ERROR_PAGE_URL"].should == "\"error_page_url\""
|
29
37
|
config_hash["MAINTENANCE_PAGE_URL"].should == "\"en_US.UTF-8\""
|
30
38
|
end
|
31
39
|
|
32
|
-
it "
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
40
|
+
it "raises an error if a configuration is missing" do
|
41
|
+
@config.configs = {
|
42
|
+
"TRACKMANw_MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8\"",
|
43
|
+
"TRACKMANw_URL" => "\"url\"",
|
44
|
+
"TRACKMANw_ERROR_PAGE_URL" => "\"error_page_url\""
|
45
|
+
}
|
37
46
|
|
38
|
-
|
39
|
-
lambda{ config_handler.setup }.should raise_error(Trackman::SetupException, "cannot find trackman configuration, make sure trackman addon is installed")
|
47
|
+
lambda{ @config.setup }.should raise_error(Trackman::SetupException)
|
40
48
|
end
|
41
49
|
|
42
|
-
it "
|
43
|
-
|
44
|
-
|
50
|
+
it "raises an error if trackman version is bad" do
|
51
|
+
@config.heroku_version = "2.22.2"
|
52
|
+
|
53
|
+
lambda{ @config.setup }.should raise_error(Trackman::SetupException)
|
45
54
|
end
|
46
55
|
|
47
|
-
it "
|
48
|
-
configs = {"TRACKMAN_MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8\"",
|
56
|
+
it "backups configs when they already exist and add the new ones" do
|
57
|
+
@config.configs = {"TRACKMAN_MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8\"",
|
49
58
|
"TRACKMAN_URL" => "\"url\"",
|
50
59
|
"TRACKMAN_ERROR_PAGE_URL" => "\"error_page_url\"",
|
51
60
|
"MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8_old\"",
|
52
61
|
"SOME_CONFIG" => "\"url\"",
|
53
62
|
"ERROR_PAGE_URL" => "\"error_page_url_old\""
|
54
63
|
}
|
55
|
-
|
56
|
-
config_handler.setup
|
57
|
-
config_hash = config_handler.configs
|
64
|
+
@config.setup
|
58
65
|
|
59
|
-
puts config_hash
|
60
66
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
67
|
+
@config.heroku_configs["ERROR_PAGE_URL_bkp"].should == "\"error_page_url_old\""
|
68
|
+
@config.heroku_configs["MAINTENANCE_PAGE_URL_bkp"].should == "\"en_US.UTF-8_old\""
|
69
|
+
@config.heroku_configs["ERROR_PAGE_URL"].should == "\"error_page_url\""
|
70
|
+
@config.heroku_configs["MAINTENANCE_PAGE_URL"].should == "\"en_US.UTF-8\""
|
65
71
|
end
|
66
72
|
|
67
|
-
it "
|
68
|
-
configs = {"TRACKMAN_MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8\"",
|
73
|
+
it "does not backup configs when they do not exist" do
|
74
|
+
@config.configs = {"TRACKMAN_MAINTENANCE_PAGE_URL" => "\"en_US.UTF-8\"",
|
69
75
|
"TRACKMAN_URL" => "\"url\"",
|
70
76
|
"TRACKMAN_ERROR_PAGE_URL" => "\"error_page_url\"",
|
71
77
|
"SOME_CONFIG" => "\"url\""
|
72
78
|
}
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
config_hash = config_handler.configs
|
79
|
+
|
80
|
+
@config.setup
|
81
|
+
|
77
82
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
83
|
+
@config.heroku_configs.keys.should_not include("ERROR_PAGE_URL_bkp")
|
84
|
+
@config.heroku_configs.keys.should_not include("MAINTENANCE_PAGE_URL_bkp")
|
85
|
+
@config.heroku_configs["ERROR_PAGE_URL"].should == "\"error_page_url\""
|
86
|
+
@config.heroku_configs["MAINTENANCE_PAGE_URL"].should == "\"en_US.UTF-8\""
|
82
87
|
end
|
83
88
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trackman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-08-
|
13
|
+
date: 2012-08-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|