hap 0.0.2

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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +17 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +73 -0
  9. data/Rakefile +34 -0
  10. data/bin/hap +7 -0
  11. data/env.rb +14 -0
  12. data/hap.gemspec +30 -0
  13. data/lib/hap.rb +65 -0
  14. data/lib/hap/app.rb +66 -0
  15. data/lib/hap/cli.rb +111 -0
  16. data/lib/hap/constants.rb +23 -0
  17. data/lib/hap/generators.rb +15 -0
  18. data/lib/hap/generators/endpoint.rb +43 -0
  19. data/lib/hap/generators/gemfile.rb +28 -0
  20. data/lib/hap/generators/haproxy.rb +56 -0
  21. data/lib/hap/generators/install.rb +52 -0
  22. data/lib/hap/generators/procfile.rb +39 -0
  23. data/lib/hap/generators/templates/app/.ruby-gemset +1 -0
  24. data/lib/hap/generators/templates/app/.ruby-version +1 -0
  25. data/lib/hap/generators/templates/app/Gemfile +8 -0
  26. data/lib/hap/generators/templates/app/Rakefile +0 -0
  27. data/lib/hap/generators/templates/app/env.rb +10 -0
  28. data/lib/hap/generators/templates/app/server.rb +2 -0
  29. data/lib/hap/generators/templates/config/backend/Gemfile.erb +5 -0
  30. data/lib/hap/generators/templates/config/backend/Procfile.erb +3 -0
  31. data/lib/hap/generators/templates/config/frontend/Procfile.erb +8 -0
  32. data/lib/hap/generators/templates/config/frontend/haproxy.cfg.erb +41 -0
  33. data/lib/hap/generators/templates/endpoint.erb +12 -0
  34. data/lib/hap/helpers.rb +23 -0
  35. data/lib/hap/helpers/endpoint.rb +92 -0
  36. data/lib/hap/helpers/git.rb +41 -0
  37. data/lib/hap/helpers/heroku.rb +63 -0
  38. data/lib/hap/helpers/user_input.rb +29 -0
  39. data/lib/hap/version.rb +3 -0
  40. data/lib/kernel.rb +6 -0
  41. data/spec/cli_spec.rb +36 -0
  42. data/spec/fixtures/backend/Procfile +2 -0
  43. data/spec/fixtures/backend/Procfile.production +2 -0
  44. data/spec/fixtures/frontend/Procfile +3 -0
  45. data/spec/fixtures/frontend/Procfile.production +1 -0
  46. data/spec/fixtures/frontend/haproxy.cfg +31 -0
  47. data/spec/fixtures/frontend/haproxy.cfg.production +31 -0
  48. data/spec/fixtures/my_end_point.rb +7 -0
  49. data/spec/fixtures/namespace_my_end_point.rb +11 -0
  50. data/spec/generators/endpoint_spec.rb +29 -0
  51. data/spec/generators/haproxy_spec.rb +29 -0
  52. data/spec/generators/install_spec.rb +30 -0
  53. data/spec/generators/procfile_spec.rb +41 -0
  54. data/spec/support/minitest_helper.rb +18 -0
  55. metadata +225 -0
@@ -0,0 +1,41 @@
1
+ module Hap
2
+ module Helpers
3
+ module Git
4
+
5
+ protected
6
+
7
+ def has_remote_repository?
8
+ run("git remote show | grep #{Hap::REMOTE_REPO_NAME}", capture: true) === true
9
+ end
10
+
11
+ def bundle_and_git app, force = nil
12
+ inside "#{Hap.app_root}/#{Hap::DEPLOYMENT_DIR}/#{app}" do
13
+ unless has_remote_repository?
14
+ git_remote_add app
15
+ end
16
+ Bundler.with_clean_env do
17
+ run "bundle install", capture: true
18
+ end
19
+ run "git add .", capture: true
20
+ run "git commit -am 'Auto deploy at #{Time.now}'", capture: true
21
+ run "git push #{Hap::REMOTE_REPO_NAME} master #{force}", capture: true
22
+ end
23
+ end
24
+
25
+ def git_init
26
+ unless File.exists?(".git")
27
+ run "git init", capture: true
28
+ run "git add .", capture: true
29
+ run "git commit -am 'initial commit'", capture: true
30
+ end
31
+ end
32
+
33
+ def git_remote_add app
34
+ app = App.new(app) if app.is_a?(String)
35
+ run "git remote add #{Hap::REMOTE_REPO_NAME} #{app.data["git_url"]}" unless has_remote_repository?
36
+ run "heroku accounts:set #{heroku_account}" if has_accounts_plugin?
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,63 @@
1
+ module Hap
2
+ module Helpers
3
+ module Heroku
4
+
5
+ protected
6
+
7
+ def get_env_var_or_ask_user key, desc = nil
8
+ val = ENV[key] || ask_user(desc || key)
9
+ set_env_var(key, val) unless ENV[key]
10
+ val
11
+ end
12
+
13
+ def api_key
14
+ @api_key ||= get_env_var_or_ask_user "HEROKU_API_KEY", "heroku api key"
15
+ end
16
+
17
+ def heroku_account
18
+ @heroku_account ||= get_env_var_or_ask_user "HEROKU_ACCOUNT", "heroku:accounts plugin account name"
19
+ end
20
+
21
+ def has_accounts_plugin?
22
+ run "heroku plugins | grep accounts", capture: true
23
+ end
24
+
25
+ def create_app name
26
+ begin
27
+
28
+ @app = App.new name
29
+ return @app if @app.exists?
30
+
31
+ create_file @app.create!(self.api_key).file do
32
+ Oj.dump(@app.data)
33
+ end
34
+
35
+ raise Thor::Error, "App could not created" unless @app.exists?
36
+
37
+ inside "#{Hap.app_root}/#{Hap::DEPLOYMENT_DIR}/#{name}" do
38
+ git_init
39
+ git_remote_add @app
40
+ end
41
+
42
+ @app
43
+
44
+ rescue Exception => e
45
+
46
+ @app.destroy! if @app && @app.exists?
47
+ raise e
48
+
49
+ end
50
+ end
51
+
52
+ def delete_app name
53
+ app = App.new(name)
54
+ app.destroy! api_key
55
+ remove_file app.file
56
+ end
57
+
58
+ private
59
+
60
+
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,29 @@
1
+ module Hap
2
+ module Helpers
3
+ module UserInput
4
+
5
+ protected
6
+
7
+ def ask_user option
8
+ value = ask "Please enter your #{option}:"
9
+ raise Thor::Error, "You must enter a value for that field." if value.empty?
10
+ value
11
+ end
12
+
13
+ def set_env_var key,val
14
+ file = "#{Hap.app_root}/.env"
15
+ if File.exists?(file)
16
+ if File.read(file).include?(key)
17
+ gsub_file file, Regexp.new("#{key}=*.+"), "#{key}=#{val}"
18
+ else
19
+ append_file file, "\n#{key}=#{val}"
20
+ end
21
+ else
22
+ create_file file, "#{key}=#{val}"
23
+ end
24
+ ENV[key] = val
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module Hap
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,6 @@
1
+ module ::Kernel
2
+ def called_from(level=1)
3
+ arrs = caller((level||1)+1) or return
4
+ arrs[0] =~ /:(\d+)(?::in `(.*)')?/ ? [$`, $1.to_i, $2] : nil
5
+ end
6
+ end
@@ -0,0 +1,36 @@
1
+ describe Hap::CLI do
2
+
3
+ # describe "when i run hap new [PATH]" do
4
+ #
5
+ # after do
6
+ # system "rm -rf #{dummy_path}"
7
+ # end
8
+ #
9
+ # it "creates a new hap app" do
10
+ # Hap::CLI.start ["new", dummy_path, "-- force"]
11
+ # Dir.glob("lib/hap/generators/templates/app").each do |source|
12
+ # target = source.gsub("lib/hap/generators/templates/app",dummy_path)
13
+ # File.exists?(target).must_equal true
14
+ # end
15
+ # end
16
+ #
17
+ # end
18
+
19
+ # describe "when i run hap server" do
20
+ #
21
+ # before do
22
+ # Hap::CLI.start ["new", dummy_path]
23
+ # end
24
+ #
25
+ # after do
26
+ # system "rm -rf #{dummy_path}"
27
+ # end
28
+ #
29
+ # it "generate necessary files and runs hap server" do
30
+ # Dir.chdir(dummy_path)
31
+ # Hap::CLI.start ["server"]
32
+ # end
33
+ #
34
+ # end
35
+
36
+ end
@@ -0,0 +1,2 @@
1
+
2
+ web: bundle exec ruby app/endpoints/my_end_point.rb -p $PORT
@@ -0,0 +1,2 @@
1
+
2
+ web: bundle exec ruby app/endpoints/my_end_point.rb -p $PORT
@@ -0,0 +1,3 @@
1
+ web: haproxy -f tmp/server/frontend/haproxy.cfg -d -V
2
+
3
+
@@ -0,0 +1 @@
1
+ web: ./haproxy -f haproxy.cfg
@@ -0,0 +1,31 @@
1
+ global
2
+ pidfile /var/run/haproxy.pid
3
+ log 127.0.0.1 local0 info
4
+ user root
5
+
6
+ defaults
7
+ mode http
8
+
9
+ clitimeout 600000 # maximum inactivity time on the client side
10
+ srvtimeout 600000 # maximum inactivity time on the server side
11
+ timeout connect 8000 # maximum time to wait for a connection attempt to a server to succeed
12
+
13
+ stats enable
14
+ stats auth admin:password
15
+ stats uri /monitor
16
+ stats refresh 5s
17
+ retries 5
18
+ option httpchk GET /status
19
+ option redispatch
20
+ option httpclose
21
+ option abortonclose
22
+ option forwardfor
23
+
24
+ balance roundrobin # each server is used in turns, according to assigned weight
25
+
26
+ frontend http
27
+ bind :5000
28
+ monitor-uri /haproxy # end point to monitor HAProxy status (returns 200)
29
+
30
+
31
+
@@ -0,0 +1,31 @@
1
+ global
2
+ pidfile /var/run/haproxy.pid
3
+ log 127.0.0.1 local0 info
4
+ user root
5
+
6
+ defaults
7
+ mode http
8
+
9
+ clitimeout 600000 # maximum inactivity time on the client side
10
+ srvtimeout 600000 # maximum inactivity time on the server side
11
+ timeout connect 8000 # maximum time to wait for a connection attempt to a server to succeed
12
+
13
+ stats enable
14
+ stats auth admin:password
15
+ stats uri /monitor
16
+ stats refresh 5s
17
+ retries 5
18
+ option httpchk GET /status
19
+ option redispatch
20
+ option httpclose
21
+ option abortonclose
22
+ option forwardfor
23
+
24
+ balance roundrobin # each server is used in turns, according to assigned weight
25
+
26
+ frontend http
27
+ bind :$PORT
28
+ monitor-uri /haproxy # end point to monitor HAProxy status (returns 200)
29
+
30
+
31
+
@@ -0,0 +1,7 @@
1
+ require 'goliath'
2
+
3
+ class MyEndPoint < Goliath::API
4
+ def response(env)
5
+ [200,{},"OK"]
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ require 'goliath'
2
+
3
+ module Namespace
4
+
5
+ class MyEndPoint < Goliath::API
6
+ def response(env)
7
+ [200,{},"OK"]
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,29 @@
1
+ describe Hap::Generators::Endpoint do
2
+
3
+ describe "when i run generator" do
4
+
5
+ before do
6
+ Hap::CLI.start ["new", dummy_path, "--force"]
7
+ Dir.chdir(dummy_path)
8
+ end
9
+
10
+ after do
11
+ Dir.chdir("../..")
12
+ system "rm -rf #{dummy_path}"
13
+ end
14
+
15
+ it "it should create an endpoint with given name" do
16
+ Hap::Generators::Endpoint.start ["my_end_point", "--force"]
17
+ endpoint("my_end_point.rb").must_equal fixture("my_end_point.rb")
18
+ end
19
+
20
+ it "it should respects namespace" do
21
+ Hap::Generators::Endpoint.start ["namespace/my_end_point", "--force"]
22
+ endpoint("namespace/my_end_point.rb").must_equal fixture("namespace_my_end_point.rb")
23
+ end
24
+
25
+ end
26
+
27
+
28
+
29
+ end
@@ -0,0 +1,29 @@
1
+ describe Hap::Generators::Haproxy do
2
+
3
+ describe "when i run generator" do
4
+
5
+ before do
6
+ Hap::CLI.start ["new", dummy_path, "--force"]
7
+ Dir.chdir(dummy_path)
8
+ end
9
+
10
+ after do
11
+ Dir.chdir("../..")
12
+ system "rm -rf #{dummy_path}"
13
+ end
14
+
15
+ it "it should templates haproxy config based on environment" do
16
+ Hap::Generators::Haproxy.start ["development"]
17
+ File.read("#{Hap::RUNTIME_DIR}/#{Hap::FRONT_END}/haproxy.cfg").must_equal fixture("#{Hap::FRONT_END}/haproxy.cfg")
18
+ end
19
+
20
+ it "it should templates haproxy config based on environment [DEV]" do
21
+ Hap::Generators::Haproxy.start ["production"]
22
+ File.read("#{Hap::DEPLOYMENT_DIR}/#{Hap::FRONT_END}/haproxy.cfg").must_equal fixture("#{Hap::FRONT_END}/haproxy.cfg.production")
23
+ end
24
+
25
+ end
26
+
27
+
28
+
29
+ end
@@ -0,0 +1,30 @@
1
+ describe Hap::Generators::Install do
2
+
3
+ describe "when i run generator" do
4
+
5
+ after do
6
+ system "rm -rf #{dummy_path}"
7
+ end
8
+
9
+ it "it should creates a new Hap app and initialize git" do
10
+ Hap::CLI.start ["new", dummy_path ,"--force"]
11
+ Dir.glob("lib/hap/generators/templates/app").each do |source|
12
+ target = source.gsub("lib/hap/generators/templates/app",dummy_path)
13
+ File.exists?(target).must_equal true
14
+ File.exists?("#{target}/.git").must_equal true
15
+ end
16
+ end
17
+
18
+ it "it should bundles after creating a new app" do
19
+ Hap::CLI.start ["new", dummy_path ,"--bundle=true --force"]
20
+ File.exists?("#{dummy_path}/Gemfile.lock").must_equal true
21
+ end
22
+
23
+ it "it should creates a new hap app with heroku app" do
24
+ Hap::CLI.start ["new", dummy_path ,"--remote=true", "--force"]
25
+ File.exists?("#{dummy_path}/#{Hap::DEPLOYMENT_DIR}/#{Hap::FRONT_END}/#{Hap::APP_DATA_FILE}").must_equal true
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,41 @@
1
+ describe Hap::Generators::Procfile do
2
+
3
+ describe "when i run generator" do
4
+
5
+ before do
6
+ Hap::CLI.start ["new", dummy_path, "--force"]
7
+ Dir.chdir(dummy_path)
8
+ end
9
+
10
+ after do
11
+ Dir.chdir("../..")
12
+ system "rm -rf #{dummy_path}"
13
+ end
14
+
15
+ it "it should creates procfile for Frontend [haproxy]" do
16
+ Hap::Generators::Procfile.start [Hap::FRONT_END]
17
+ File.read("#{Hap::RUNTIME_DIR}/#{Hap::FRONT_END}/Procfile").must_equal procfile(Hap::FRONT_END)
18
+ end
19
+
20
+ it "it should creates procfile for Backend" do
21
+ Hap::Generators::Endpoint.start ["my_end_point", "--force"]
22
+ Hap::Generators::Procfile.start ["my_end_point"]
23
+ File.read("#{Hap::RUNTIME_DIR}/my_end_point/Procfile").must_equal procfile(Hap::BACK_END)
24
+ end
25
+
26
+ it "it should creates procfile for Frontend [haproxy] for Deployment" do
27
+ Hap::Generators::Procfile.start ["frontend", "production"]
28
+ File.read("#{Hap::DEPLOYMENT_DIR}/#{Hap::FRONT_END}/Procfile").must_equal procfile(Hap::FRONT_END, ".production")
29
+ end
30
+
31
+ it "it should creates procfile for Backend for Deployment" do
32
+ Hap::Generators::Endpoint.start ["my_end_point", "--force"]
33
+ Hap::Generators::Procfile.start ["my_end_point", "production"]
34
+ File.read("#{Hap::DEPLOYMENT_DIR}/my_end_point/Procfile").must_equal procfile(Hap::BACK_END, ".production")
35
+ end
36
+
37
+ end
38
+
39
+
40
+
41
+ end
@@ -0,0 +1,18 @@
1
+ require 'minitest/pride'
2
+ require 'minitest/autorun'
3
+
4
+ class MiniTest::Spec
5
+
6
+ def procfile app, production = nil
7
+ File.read("#{ENV['GEM_ROOT']}/spec/fixtures/#{app}/Procfile#{production}")
8
+ end
9
+ def dummy_path
10
+ "test/tmp/testapp"
11
+ end
12
+ def fixture filename
13
+ File.read("#{ENV['GEM_ROOT']}/spec/fixtures/#{filename}")
14
+ end
15
+ def endpoint filename
16
+ File.read("#{Hap.app_root}/#{Hap::ENDPOINTS_DIR}/#{filename}")
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,225 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hap
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - lemmycaution
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: heroku-api
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: heroku
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: oj
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: An Interface to help creating multi-server high scalable APIs on heroku
126
+ email:
127
+ - fluxproject@gmail.com
128
+ executables:
129
+ - hap
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .DS_Store
134
+ - .gitignore
135
+ - .ruby-gemset
136
+ - .ruby-version
137
+ - Gemfile
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - bin/hap
142
+ - env.rb
143
+ - hap.gemspec
144
+ - lib/hap.rb
145
+ - lib/hap/app.rb
146
+ - lib/hap/cli.rb
147
+ - lib/hap/constants.rb
148
+ - lib/hap/generators.rb
149
+ - lib/hap/generators/endpoint.rb
150
+ - lib/hap/generators/gemfile.rb
151
+ - lib/hap/generators/haproxy.rb
152
+ - lib/hap/generators/install.rb
153
+ - lib/hap/generators/procfile.rb
154
+ - lib/hap/generators/templates/app/.ruby-gemset
155
+ - lib/hap/generators/templates/app/.ruby-version
156
+ - lib/hap/generators/templates/app/Gemfile
157
+ - lib/hap/generators/templates/app/Rakefile
158
+ - lib/hap/generators/templates/app/env.rb
159
+ - lib/hap/generators/templates/app/server.rb
160
+ - lib/hap/generators/templates/config/backend/Gemfile.erb
161
+ - lib/hap/generators/templates/config/backend/Procfile.erb
162
+ - lib/hap/generators/templates/config/frontend/Procfile.erb
163
+ - lib/hap/generators/templates/config/frontend/haproxy.cfg.erb
164
+ - lib/hap/generators/templates/endpoint.erb
165
+ - lib/hap/helpers.rb
166
+ - lib/hap/helpers/endpoint.rb
167
+ - lib/hap/helpers/git.rb
168
+ - lib/hap/helpers/heroku.rb
169
+ - lib/hap/helpers/user_input.rb
170
+ - lib/hap/version.rb
171
+ - lib/kernel.rb
172
+ - spec/cli_spec.rb
173
+ - spec/fixtures/backend/Procfile
174
+ - spec/fixtures/backend/Procfile.production
175
+ - spec/fixtures/frontend/Procfile
176
+ - spec/fixtures/frontend/Procfile.production
177
+ - spec/fixtures/frontend/haproxy.cfg
178
+ - spec/fixtures/frontend/haproxy.cfg.production
179
+ - spec/fixtures/my_end_point.rb
180
+ - spec/fixtures/namespace_my_end_point.rb
181
+ - spec/generators/endpoint_spec.rb
182
+ - spec/generators/haproxy_spec.rb
183
+ - spec/generators/install_spec.rb
184
+ - spec/generators/procfile_spec.rb
185
+ - spec/support/minitest_helper.rb
186
+ homepage: http://github.com/lemmycaution/hap
187
+ licenses:
188
+ - MIT
189
+ metadata: {}
190
+ post_install_message:
191
+ rdoc_options: []
192
+ require_paths:
193
+ - lib
194
+ required_ruby_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ requirements: []
205
+ rubyforge_project:
206
+ rubygems_version: 2.0.3
207
+ signing_key:
208
+ specification_version: 4
209
+ summary: Hap is a CLI and a bit much more to manage `App per Resource` APIs based
210
+ on Goliath and HaProxy
211
+ test_files:
212
+ - spec/cli_spec.rb
213
+ - spec/fixtures/backend/Procfile
214
+ - spec/fixtures/backend/Procfile.production
215
+ - spec/fixtures/frontend/Procfile
216
+ - spec/fixtures/frontend/Procfile.production
217
+ - spec/fixtures/frontend/haproxy.cfg
218
+ - spec/fixtures/frontend/haproxy.cfg.production
219
+ - spec/fixtures/my_end_point.rb
220
+ - spec/fixtures/namespace_my_end_point.rb
221
+ - spec/generators/endpoint_spec.rb
222
+ - spec/generators/haproxy_spec.rb
223
+ - spec/generators/install_spec.rb
224
+ - spec/generators/procfile_spec.rb
225
+ - spec/support/minitest_helper.rb