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.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +17 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +73 -0
- data/Rakefile +34 -0
- data/bin/hap +7 -0
- data/env.rb +14 -0
- data/hap.gemspec +30 -0
- data/lib/hap.rb +65 -0
- data/lib/hap/app.rb +66 -0
- data/lib/hap/cli.rb +111 -0
- data/lib/hap/constants.rb +23 -0
- data/lib/hap/generators.rb +15 -0
- data/lib/hap/generators/endpoint.rb +43 -0
- data/lib/hap/generators/gemfile.rb +28 -0
- data/lib/hap/generators/haproxy.rb +56 -0
- data/lib/hap/generators/install.rb +52 -0
- data/lib/hap/generators/procfile.rb +39 -0
- data/lib/hap/generators/templates/app/.ruby-gemset +1 -0
- data/lib/hap/generators/templates/app/.ruby-version +1 -0
- data/lib/hap/generators/templates/app/Gemfile +8 -0
- data/lib/hap/generators/templates/app/Rakefile +0 -0
- data/lib/hap/generators/templates/app/env.rb +10 -0
- data/lib/hap/generators/templates/app/server.rb +2 -0
- data/lib/hap/generators/templates/config/backend/Gemfile.erb +5 -0
- data/lib/hap/generators/templates/config/backend/Procfile.erb +3 -0
- data/lib/hap/generators/templates/config/frontend/Procfile.erb +8 -0
- data/lib/hap/generators/templates/config/frontend/haproxy.cfg.erb +41 -0
- data/lib/hap/generators/templates/endpoint.erb +12 -0
- data/lib/hap/helpers.rb +23 -0
- data/lib/hap/helpers/endpoint.rb +92 -0
- data/lib/hap/helpers/git.rb +41 -0
- data/lib/hap/helpers/heroku.rb +63 -0
- data/lib/hap/helpers/user_input.rb +29 -0
- data/lib/hap/version.rb +3 -0
- data/lib/kernel.rb +6 -0
- data/spec/cli_spec.rb +36 -0
- data/spec/fixtures/backend/Procfile +2 -0
- data/spec/fixtures/backend/Procfile.production +2 -0
- data/spec/fixtures/frontend/Procfile +3 -0
- data/spec/fixtures/frontend/Procfile.production +1 -0
- data/spec/fixtures/frontend/haproxy.cfg +31 -0
- data/spec/fixtures/frontend/haproxy.cfg.production +31 -0
- data/spec/fixtures/my_end_point.rb +7 -0
- data/spec/fixtures/namespace_my_end_point.rb +11 -0
- data/spec/generators/endpoint_spec.rb +29 -0
- data/spec/generators/haproxy_spec.rb +29 -0
- data/spec/generators/install_spec.rb +30 -0
- data/spec/generators/procfile_spec.rb +41 -0
- data/spec/support/minitest_helper.rb +18 -0
- 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
|
data/lib/hap/version.rb
ADDED
data/lib/kernel.rb
ADDED
data/spec/cli_spec.rb
ADDED
@@ -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 @@
|
|
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,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
|