delivery_center 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 45152e885540e4eff7d90f7401c0443e9375fe82
4
+ data.tar.gz: 5797ce2d4084413599c93c0fdf098f8e6acf844a
5
+ SHA512:
6
+ metadata.gz: 78095d1fd1b554ebd4c9907ebce01b938fbc303a67e5ff0605caa8d94e89620292716b02a6cc5929d40b671c34e01cb299b5b13de6e32e58b1ef22ffdb6b25b0
7
+ data.tar.gz: 4d581ac2e26e8919c32c1eaa600ecaf2135ca6a5a8954a11251e4480952989dee1c53158ae73268fa25e33f72cad41d62b306a6d149853a2cf349de102542255
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .envrc
data/.travis.yml ADDED
@@ -0,0 +1,19 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.3
5
+ env:
6
+ - DELIVERY_CENTER_DATABASE_USERNAME=travis DELIVERY_CENTER_DATABASE_DATABASE=myapp_test
7
+ services:
8
+ - mysql
9
+ before_script:
10
+ - bundle exec ./exe/delivery_center db create
11
+ - bundle exec ./exe/delivery_center db migrate
12
+ script:
13
+ - bundle exec rspec
14
+ deploy:
15
+ api_key:
16
+ secure: APbt3PruFSNF8l6SsRsdA6spgg8/zlOPcWT5AlMTzYvArTP52qVwBg6l53VPS0o4Blbx534ZvSCg5r/PbjjaKZY1DJGHk6EUCIunzM09wDbTLj4fh37nQGozZYB7EONs8eyedVqN5VxF2fHozR/nByTIZ9Yh4DGshyc0rKK8ObwH1JEaTtzT/Usxen3xMWC9Xee6SyBalSicbZDn8LjxnUcqfzLuOJ8rVJSFClPtwPSM8nFhkI4Qp78GwWVtOlZMoF4hzKSt3MkNy3tx7O5CKnW+o0uBrOW2k2G3Gkz8buw2ehd80OBqUKrPLs9a9bzB1G0IDpjTFLUq3HrJLFwT3oxst0pgGjDkPOlv/KngeUzJNOBvwQN8F4wLsmQdhjlMGYRxvJShtnOoGrkLDYrRZzrt8RaAFtRUNv7qFhK+C/2PoQbc4+w/QY4+ETWwoHuxgHxEDKwO4yQsHxHzm8bFkYpwufTSKgSWJdFelEI+Dq9MWD6TKnpFiwbsTrxYZq0v3B1wV3qpU8Vbxw5n/ABaFkhToAnb2XEUfvafxvg4/RycMpH5fPKA7vu4yP9ZEBoub5qnOev3ENkU7k6qcwyMAgNjy+A0f8zV53TlVOPXnEnQw+2i3Qco5f3fPBptTIEOm4Hn5YkaJ5ryS7nPQ4dI4O4EcavLnOOq8ffjOWQFBUY=
17
+ provider: rubygems
18
+ on:
19
+ tags: true
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in delivery_center.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # DeliveryCenter
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/delivery_center`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'delivery_center'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install delivery_center
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/delivery_center.
36
+
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "delivery_center"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ require "pry"
11
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'delivery_center/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "delivery_center"
8
+ spec.version = DeliveryCenter::VERSION
9
+ spec.authors = ["Takatoshi Maeda", 'tokubai']
10
+ spec.email = ["me@tmd.tw", "developers@tokubai.co.jp"]
11
+
12
+ spec.summary = %q{deploy management tool}
13
+ spec.description = %q{deploy management tool}
14
+ spec.homepage = "https://github.com/tokubai/delivery_center"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.add_dependency "thor"
24
+ spec.add_dependency "sinatra"
25
+ spec.add_dependency "sinatra-contrib"
26
+ spec.add_dependency "activerecord"
27
+ spec.add_dependency "mysql2"
28
+ spec.add_dependency "ridgepole"
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.13"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rspec", "~> 3.6.0"
33
+ spec.add_development_dependency "pry"
34
+ spec.add_development_dependency "rack-test"
35
+ spec.add_development_dependency "rspec-json_matcher"
36
+ spec.add_development_dependency "factory_girl"
37
+ spec.add_development_dependency "database_rewinder"
38
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'delivery_center'
4
+
5
+ DeliveryCenter::Cli.start(ARGV)
@@ -0,0 +1,65 @@
1
+ require 'sinatra/base'
2
+ require 'sinatra/reloader'
3
+ require 'sinatra/json'
4
+
5
+ class DeliveryCenter::App < Sinatra::Base
6
+ register Sinatra::Reloader if ENV['RACK_ENV'] == 'development'
7
+
8
+ not_found do
9
+ 'not found'
10
+ end
11
+
12
+ get '/applications.json' do
13
+ applications = DeliveryCenter::Application.all
14
+ applications = applications.where("name LIKE '%#{params[:name]}%'") unless params[:name].nil?
15
+ json applications
16
+ end
17
+
18
+ post '/applications.json' do
19
+ json DeliveryCenter::Application.find_or_create_by(name: params[:name])
20
+ end
21
+
22
+ get '/:name.json' do
23
+ json find_application
24
+ end
25
+
26
+ post '/:name/deploy.json' do
27
+ begin
28
+ json find_application.deploy!
29
+ rescue DeliveryCenter::AlreadyDeployedError => e
30
+ json({ error_code: e.code, message: 'already deployment latest revision' })
31
+ end
32
+ end
33
+
34
+ post '/:name/rollback.json' do
35
+ begin
36
+ json find_application.rollback!
37
+ rescue DeliveryCenter::PreviousDeployNotExistError => e
38
+ json({ error_code: e.code, message: 'not found previous revision' })
39
+ end
40
+ end
41
+
42
+ get '/:name/revisions.json' do
43
+ json find_application.revisions.order(id: :desc)
44
+ end
45
+
46
+ post '/:name/revisions.json' do
47
+ json find_application.revisions.find_or_create_by!(value: params[:revision])
48
+ end
49
+
50
+ get '/:name/revisions/current' do
51
+ find_application.current_revision.value
52
+ end
53
+
54
+ get '/:name/revisions/current.json' do
55
+ json find_application.current_revision
56
+ end
57
+
58
+ private
59
+
60
+ def find_application
61
+ application = DeliveryCenter::Application.find_by(name: params[:name])
62
+ raise Sinatra::NotFound if application.nil?
63
+ application
64
+ end
65
+ end
@@ -0,0 +1,3 @@
1
+ class DeliveryCenter::ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -0,0 +1,41 @@
1
+ require 'ridgepole'
2
+
3
+ class DeliveryCenter::Cli::Database < Thor
4
+ namespace 'db'
5
+
6
+ desc 'migrate', 'migrate delivery center database schema'
7
+ option 'apply', desc: 'apply', default: false, aliases: 'a', type: :boolean
8
+ def migrate
9
+ ridgepole.diff(schemafile.read, path: schemafile.to_s).migrate
10
+ end
11
+
12
+ desc 'create', 'create delivery center database'
13
+ def create
14
+ ActiveRecord::Base.clear_all_connections!
15
+ ActiveRecord::Base.establish_connection(DeliveryCenter.database_config(excludes: [:database]))
16
+ ActiveRecord::Base.connection.create_database(DeliveryCenter.database_config[:database])
17
+ DeliveryCenter.logger.info("create #{DeliveryCenter.database_config[:database]} database.")
18
+ end
19
+
20
+ desc 'drop', 'drop delivery center database'
21
+ def drop
22
+ ActiveRecord::Base.clear_all_connections!
23
+ ActiveRecord::Base.establish_connection(DeliveryCenter.database_config(excludes: [:database]))
24
+ ActiveRecord::Base.connection.drop_database(DeliveryCenter.database_config[:database])
25
+ DeliveryCenter.logger.info("drop #{DeliveryCenter.database_config[:database]} database.")
26
+ end
27
+
28
+ private
29
+
30
+ def ridgepole
31
+ @ridgepole ||= Ridgepole::Client.new(
32
+ DeliveryCenter.database_config,
33
+ dry_run: !options[:apply],
34
+ debug: false,
35
+ )
36
+ end
37
+
38
+ def schemafile
39
+ DeliveryCenter.root.join('schema', 'Schemafile')
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ require 'thor'
2
+
3
+ class DeliveryCenter::Cli < Thor
4
+ require 'delivery_center/cli/database'
5
+
6
+ desc 'db SUBCOMMAND ...ARGS', 'manage db'
7
+ subcommand 'db', DeliveryCenter::Cli::Database
8
+
9
+ desc 'server', 'run delivery center web application'
10
+ option 'port', desc: 'listen port', default: 8080, aliases: 'p', type: :numeric
11
+ option 'address', desc: 'listen address', default: 'localhost', aliases: 'b', type: :string
12
+ def server
13
+ DeliveryCenter::App.run!(options)
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module DeliveryCenter
2
+ class AlreadyDeployedError < StandardError
3
+ def code
4
+ 1
5
+ end
6
+ end
7
+
8
+ class PreviousDeployNotExistError < StandardError
9
+ def code
10
+ 2
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ class DeliveryCenter::ApiKey < DeliveryCenter::ApplicationRecord
2
+
3
+ end
@@ -0,0 +1,46 @@
1
+ require 'delivery_center/errors'
2
+
3
+ class DeliveryCenter::Application < DeliveryCenter::ApplicationRecord
4
+ has_many :revisions, class_name: 'DeliveryCenter::Revision'
5
+ has_many :deploys, class_name: 'DeliveryCenter::Deploy'
6
+
7
+ def can_deploy?
8
+ current_revision != recent_revision
9
+ end
10
+
11
+ def deploy!
12
+ self.class.transaction do
13
+ raise DeliveryCenter::AlreadyDeployedError unless can_deploy?
14
+ deploy = deploys.find_or_create_by!(revision: recent_revision)
15
+ deploy.mark_current!
16
+ deploys.reload # invalidate older current status has object cache
17
+ deploy
18
+ end
19
+ end
20
+
21
+ def can_rollback?
22
+ current = deploys.find_by(current: true)
23
+ return false if current.nil?
24
+ deploys.where('id < :current_id', current_id: current.id).order(id: :desc).exists?
25
+ end
26
+
27
+ def rollback!
28
+ self.class.transaction do
29
+ current = deploys.find_by(current: true)
30
+ raise DeliveryCenter::PreviousDeployNotExistError if current.nil?
31
+ previous = deploys.where('id < :current_id', current_id: current.id).order(id: :desc).first
32
+ raise DeliveryCenter::PreviousDeployNotExistError if previous.nil?
33
+ previous.mark_current!
34
+ deploys.reload # invalidate older current status has object cache
35
+ previous
36
+ end
37
+ end
38
+
39
+ def current_revision
40
+ deploys.find_by(current: true)&.revision
41
+ end
42
+
43
+ def recent_revision
44
+ revisions.last
45
+ end
46
+ end
@@ -0,0 +1,12 @@
1
+ class DeliveryCenter::Deploy < DeliveryCenter::ApplicationRecord
2
+ belongs_to :application, class_name: 'DeliveryCenter::Application'
3
+ belongs_to :revision, class_name: 'DeliveryCenter::Revision'
4
+
5
+ def mark_current!
6
+ self.class.transaction do
7
+ self.class.where(application_id: application_id).update_all(current: false)
8
+ self.current = true
9
+ self.save!
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ class DeliveryCenter::Revision < DeliveryCenter::ApplicationRecord
2
+
3
+ end
@@ -0,0 +1,7 @@
1
+ require 'delivery_center/application_record'
2
+
3
+ Dir.glob(DeliveryCenter.root.join('models', '*.rb')).each do |f|
4
+ require f
5
+ end
6
+
7
+ ActiveRecord::Base.establish_connection(DeliveryCenter.database_config)
@@ -0,0 +1,3 @@
1
+ Dir.glob(File.join(__dir__, '*.rb')).each do |f|
2
+ require f
3
+ end
@@ -0,0 +1,6 @@
1
+ create_table "api_keys", unsigned: true, force: :cascade do |t|
2
+ t.string :title, null: false
3
+ t.string :description, null: false
4
+ t.string :value, null: false
5
+ t.timestamps
6
+ end
@@ -0,0 +1,6 @@
1
+ create_table "applications", unsigned: true, force: :cascade do |t|
2
+ t.string :name, null: false
3
+ t.timestamps
4
+ end
5
+
6
+ add_index "applications", ["name"], name: "idx_name", unique: true, using: :btree
@@ -0,0 +1,6 @@
1
+ create_table "deploys", unsigned: true, force: :cascade do |t|
2
+ t.integer :application_id, null: false
3
+ t.integer :revision_id, null: false
4
+ t.boolean :current, default: false
5
+ t.timestamps
6
+ end
@@ -0,0 +1,7 @@
1
+ create_table "revisions", unsigned: true, force: :cascade do |t|
2
+ t.integer :application_id, null: false
3
+ t.string :value, null: false
4
+ t.timestamps
5
+ end
6
+
7
+ add_index "revisions", ["application_id", "value"], name: "idx_application_id_value", unique: true, using: :btree
@@ -0,0 +1,3 @@
1
+ module DeliveryCenter
2
+ VERSION = "0.1.2"
3
+ end
@@ -0,0 +1,44 @@
1
+ require 'active_record'
2
+
3
+ module DeliveryCenter
4
+ def self.logger
5
+ @logger ||= Logger.new(STDOUT)
6
+ end
7
+
8
+ def self.root
9
+ Pathname.new(File.join(__dir__, 'delivery_center'))
10
+ end
11
+
12
+ def self.database_config(excludes: [])
13
+ config = _database_config
14
+ excludes.each { |key| config.delete(key) }
15
+ config
16
+ end
17
+
18
+ def self._database_config
19
+ if ENV['RACK_ENV'] == 'test'
20
+ {
21
+ adapter: 'mysql2',
22
+ username: ENV['DELIVERY_CENTER_DATABASE_USERNAME'],
23
+ password: ENV['DELIVERY_CENTER_DATABASE_PASSWORD'],
24
+ database: ENV['DELIVERY_CENTER_DATABASE_DATABASE'] || 'delivery_center_test',
25
+ host: ENV['DELIVERY_CENTER_DATABASE_HOST'],
26
+ port: ENV['DELIVERY_CENTER_DATABASE_PORT'],
27
+ }
28
+ else
29
+ {
30
+ adapter: 'mysql2',
31
+ username: ENV['DELIVERY_CENTER_DATABASE_USERNAME'],
32
+ password: ENV['DELIVERY_CENTER_DATABASE_PASSWORD'],
33
+ database: ENV['DELIVERY_CENTER_DATABASE_DATABASE'] || 'delivery_center',
34
+ host: ENV['DELIVERY_CENTER_DATABASE_HOST'],
35
+ port: ENV['DELIVERY_CENTER_DATABASE_PORT'],
36
+ }
37
+ end
38
+ end
39
+
40
+ require 'delivery_center/app'
41
+ require 'delivery_center/cli'
42
+ require 'delivery_center/models'
43
+ require "delivery_center/version"
44
+ end
metadata ADDED
@@ -0,0 +1,268 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: delivery_center
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Takatoshi Maeda
8
+ - tokubai
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2017-07-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: sinatra
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: sinatra-contrib
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: activerecord
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: mysql2
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: ridgepole
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: bundler
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '1.13'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.13'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '10.0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '10.0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: 3.6.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 3.6.0
140
+ - !ruby/object:Gem::Dependency
141
+ name: pry
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rack-test
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: rspec-json_matcher
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: factory_girl
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: database_rewinder
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ description: deploy management tool
211
+ email:
212
+ - me@tmd.tw
213
+ - developers@tokubai.co.jp
214
+ executables:
215
+ - delivery_center
216
+ extensions: []
217
+ extra_rdoc_files: []
218
+ files:
219
+ - ".gitignore"
220
+ - ".travis.yml"
221
+ - Gemfile
222
+ - README.md
223
+ - Rakefile
224
+ - bin/console
225
+ - bin/setup
226
+ - delivery_center.gemspec
227
+ - exe/delivery_center
228
+ - lib/delivery_center.rb
229
+ - lib/delivery_center/app.rb
230
+ - lib/delivery_center/application_record.rb
231
+ - lib/delivery_center/cli.rb
232
+ - lib/delivery_center/cli/database.rb
233
+ - lib/delivery_center/errors.rb
234
+ - lib/delivery_center/models.rb
235
+ - lib/delivery_center/models/api_key.rb
236
+ - lib/delivery_center/models/application.rb
237
+ - lib/delivery_center/models/deploy.rb
238
+ - lib/delivery_center/models/revision.rb
239
+ - lib/delivery_center/schema/Schemafile
240
+ - lib/delivery_center/schema/api_keys.rb
241
+ - lib/delivery_center/schema/applications.rb
242
+ - lib/delivery_center/schema/deploys.rb
243
+ - lib/delivery_center/schema/revisions.rb
244
+ - lib/delivery_center/version.rb
245
+ homepage: https://github.com/tokubai/delivery_center
246
+ licenses: []
247
+ metadata: {}
248
+ post_install_message:
249
+ rdoc_options: []
250
+ require_paths:
251
+ - lib
252
+ required_ruby_version: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ requirements: []
263
+ rubyforge_project:
264
+ rubygems_version: 2.5.2
265
+ signing_key:
266
+ specification_version: 4
267
+ summary: deploy management tool
268
+ test_files: []