dockrails 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/dockrails +10 -1
- data/lib/dockrails/generate.rb +48 -50
- data/lib/dockrails/version.rb +1 -1
- data/spec/generate_spec.rb +180 -0
- data/spec/spec_helper.rb +20 -0
- metadata +76 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: adbe324970fc15fb50b9b9ad644592992c9f1241
|
4
|
+
data.tar.gz: 0776a2436119808d5471b06910d3535c16889847
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da05bbe63ab3882df34d3b5663268e4c72a907c16c2ecd82bffa4c06167ccb50410bcb420dc7b4a1410291cfae11b178243e671c00fd26bdef999060a04121ff
|
7
|
+
data.tar.gz: 75d4f9effa54dd0010f5743dad3ccb700198d9227f6b216d338f44c4373932a84be887e84e359567811d4a4962aaa9e4e1d2928312c784d0e2fe37c6d54c2f7e
|
data/bin/dockrails
CHANGED
@@ -18,7 +18,7 @@ command :init do |c|
|
|
18
18
|
existing_files = ["Dockerfile", "docker-compose.yml", "docker-sync.yml"].map { |file| File.exist?(file) }
|
19
19
|
if existing_files.include?(true)
|
20
20
|
say "We detected an existing Docker install in this folder"
|
21
|
-
answer = agree "Do you want to continue and override it?"
|
21
|
+
answer = agree "Do you want to continue and override it? (yes|no)"
|
22
22
|
exit if !answer
|
23
23
|
end
|
24
24
|
|
@@ -30,6 +30,15 @@ command :init do |c|
|
|
30
30
|
end
|
31
31
|
|
32
32
|
generate = Dockrails::Generate.new(app_path: rails_app)
|
33
|
+
|
34
|
+
(generate.check_system_requirements).each do |k,v|
|
35
|
+
if v == false
|
36
|
+
say "please install \"#{k}\" in order to continue\n"
|
37
|
+
exit
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
generate.configure
|
33
42
|
generate.create_folders
|
34
43
|
generate.create_dockerfile
|
35
44
|
generate.create_start_script
|
data/lib/dockrails/generate.rb
CHANGED
@@ -1,62 +1,60 @@
|
|
1
1
|
module Dockrails
|
2
2
|
class Generate
|
3
3
|
|
4
|
-
def initialize(app_path:)
|
5
|
-
check_system_requirements
|
4
|
+
def initialize(app_path:, config: {})
|
6
5
|
@app_path = app_path
|
7
|
-
@config =
|
6
|
+
@config = config
|
8
7
|
end
|
9
8
|
|
10
9
|
def check_system_requirements
|
11
10
|
requirement = Hash.new
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
requirement["docker-compose"] = system("which docker-compose > /dev/null")
|
16
|
-
|
17
|
-
requirement.each do |k,v|
|
18
|
-
if v == false
|
19
|
-
say "please install \"#{k}\" in order to continue\n"
|
20
|
-
end
|
11
|
+
|
12
|
+
["unison", "docker", "docker-sync", "docker-compose"].each do |binary|
|
13
|
+
requirement[binary] = binary_present?(binary: binary)
|
21
14
|
end
|
15
|
+
|
16
|
+
return requirement
|
17
|
+
end
|
18
|
+
|
19
|
+
def binary_present?(binary:)
|
20
|
+
system("which #{binary} > /dev/null")
|
22
21
|
end
|
23
22
|
|
24
|
-
def
|
25
|
-
config =
|
26
|
-
config[
|
27
|
-
config[
|
28
|
-
config[
|
29
|
-
config[
|
30
|
-
config[
|
31
|
-
config[
|
32
|
-
config["sidekiq"] = agree("\nDo you need a SideKiq Container") if config["redis"]
|
23
|
+
def configure
|
24
|
+
@config[:"ruby-version"] = choose("\nChoose a ruby version?", "latest", "2.4", "2.3", "2.2")
|
25
|
+
@config[:db] = choose("\nChoose a DB Engine", :pgsql, :mysql)
|
26
|
+
@config[:db_name] = ask "\nChoose a database name"
|
27
|
+
@config[:db_user] = ask "\nChoose a database username"
|
28
|
+
@config[:db_password] = ask "\nChoose a database password"
|
29
|
+
@config[:redis] = agree("\nDo you need a Redis DB? (yes|no)")
|
30
|
+
@config[:sidekiq] = agree("\nDo you need a SideKiq Container? (yes|no)") if @config[:redis]
|
33
31
|
|
34
32
|
user_agree = agree "\nSummary:
|
35
|
-
- Ruby version: #{config["ruby-version"]}
|
36
|
-
- DB Engine: #{config[
|
37
|
-
- DB Name: #{config[
|
38
|
-
- DB Username: #{config[
|
39
|
-
- DB Password: #{config[
|
40
|
-
- Redis? #{config[
|
41
|
-
- Job Container? #{config[
|
42
|
-
Is this correct?"
|
33
|
+
- Ruby version: #{@config[:"ruby-version"]}
|
34
|
+
- DB Engine: #{@config[:db]}
|
35
|
+
- DB Name: #{@config[:db_name]}
|
36
|
+
- DB Username: #{@config[:db_user]}
|
37
|
+
- DB Password: #{@config[:db_password]}
|
38
|
+
- Redis? #{@config[:redis]}
|
39
|
+
- Job Container? #{@config[:sidekiq] ||= false}\n
|
40
|
+
Is this correct? (yes|no)"
|
43
41
|
|
44
42
|
unless user_agree
|
45
|
-
|
43
|
+
configure
|
46
44
|
end
|
47
45
|
|
48
|
-
return(config)
|
46
|
+
return(@config)
|
49
47
|
end
|
50
48
|
|
51
49
|
def create_folders
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
FileUtils.rm_rf('data')
|
51
|
+
FileUtils.mkdir_p('data/sql')
|
52
|
+
FileUtils.mkdir_p('data/redis') if @config[:redis]
|
55
53
|
end
|
56
54
|
|
57
55
|
def create_dockerfile
|
58
56
|
File.open("Dockerfile", 'w') do |f|
|
59
|
-
f.write("FROM ruby:#{@config["ruby-version"]}
|
57
|
+
f.write("FROM ruby:#{@config[:"ruby-version"]}
|
60
58
|
RUN apt-get update && apt-get install -y \
|
61
59
|
build-essential \
|
62
60
|
wget \
|
@@ -88,7 +86,7 @@ module Dockrails
|
|
88
86
|
end
|
89
87
|
|
90
88
|
def create_start_script
|
91
|
-
|
89
|
+
FileUtils.mkdir_p("#{@app_path}/scripts")
|
92
90
|
File.open("#{@app_path}/scripts/start-dev.sh", "w") do |f|
|
93
91
|
f.write("#!/bin/bash
|
94
92
|
bundle check || bundle install
|
@@ -102,17 +100,17 @@ module Dockrails
|
|
102
100
|
f.write "services:\n"
|
103
101
|
f.write " db:\n"
|
104
102
|
|
105
|
-
case @config[
|
103
|
+
case @config[:db] when :mysql
|
106
104
|
f.write " image: mysql\n"
|
107
105
|
f.write " volumes:\n"
|
108
106
|
f.write " - ./data/sql:/var/lib/mysql\n"
|
109
107
|
f.write " ports:\n"
|
110
108
|
f.write " - \"3306:3306\"\n"
|
111
109
|
f.write " environment:\n"
|
112
|
-
f.write " MYSQL_DATABASE: #{@config[
|
113
|
-
f.write " MYSQL_USER: #{@config[
|
114
|
-
f.write " MYSQL_PASSWORD: #{@config[
|
115
|
-
f.write " MYSQL_ROOT_PASSWORD: #{@config[
|
110
|
+
f.write " MYSQL_DATABASE: #{@config[:db_name]}\n"
|
111
|
+
f.write " MYSQL_USER: #{@config[:db_user]}\n"
|
112
|
+
f.write " MYSQL_PASSWORD: #{@config[:db_password]}\n"
|
113
|
+
f.write " MYSQL_ROOT_PASSWORD: #{@config[:db_password]}\n"
|
116
114
|
when :pgsql
|
117
115
|
f.write " image: postgres\n"
|
118
116
|
f.write " volumes:\n"
|
@@ -120,12 +118,12 @@ module Dockrails
|
|
120
118
|
f.write " ports:\n"
|
121
119
|
f.write " - \"5432:5432\"\n"
|
122
120
|
f.write " environment:\n"
|
123
|
-
f.write " POSTGRES_DB: #{@config[
|
124
|
-
f.write " POSTGRES_USER: #{@config[
|
125
|
-
f.write " POSTGRES_PASSWORD: #{@config[
|
121
|
+
f.write " POSTGRES_DB: #{@config[:db_name]}\n"
|
122
|
+
f.write " POSTGRES_USER: #{@config[:db_user]}\n"
|
123
|
+
f.write " POSTGRES_PASSWORD: #{@config[:db_password]}\n"
|
126
124
|
end
|
127
125
|
|
128
|
-
if @config[
|
126
|
+
if @config[:redis]
|
129
127
|
f.write "\n redis:\n"
|
130
128
|
f.write " image: redis\n"
|
131
129
|
f.write " volumes:\n"
|
@@ -144,16 +142,16 @@ module Dockrails
|
|
144
142
|
f.write " ports:\n"
|
145
143
|
f.write " - \"3000:3000\"\n"
|
146
144
|
f.write " environment:\n"
|
147
|
-
f.write " REDIS_URL: redis://redis:6379\n" if @config[
|
148
|
-
f.write " DB_USER: #{@config[
|
149
|
-
f.write " DB_PASSWORD: #{@config[
|
145
|
+
f.write " REDIS_URL: redis://redis:6379\n" if @config[:redis]
|
146
|
+
f.write " DB_USER: #{@config[:db_user]}\n"
|
147
|
+
f.write " DB_PASSWORD: #{@config[:db_password]}\n"
|
150
148
|
f.write " links:\n"
|
151
149
|
f.write " - db\n"
|
152
|
-
f.write " - redis\n" if @config[
|
150
|
+
f.write " - redis\n" if @config[:redis]
|
153
151
|
f.write " tty: true\n"
|
154
152
|
f.write " stdin_open: true\n"
|
155
153
|
|
156
|
-
if @config[
|
154
|
+
if @config[:redis] && @config[:sidekiq]
|
157
155
|
f.write "\n job:\n"
|
158
156
|
f.write " build: .\n"
|
159
157
|
f.write " command: bundle exec sidekiq -C config/sidekiq.yml\n"
|
data/lib/dockrails/version.rb
CHANGED
@@ -0,0 +1,180 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dockrails/generate'
|
3
|
+
|
4
|
+
|
5
|
+
class Dummy
|
6
|
+
def command_line
|
7
|
+
system("ls")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Dockrails::Generate do
|
12
|
+
|
13
|
+
before(:all) do
|
14
|
+
#$stderr = StringIO.new
|
15
|
+
#mock_terminal
|
16
|
+
|
17
|
+
@app_path = "rails_app"
|
18
|
+
@generate = Dockrails::Generate.new(app_path: @app_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
describe ".check_system_requirements" do
|
22
|
+
it "should test for Unison, docker, docker-compose and docker-sync binaries" do
|
23
|
+
values = @generate.check_system_requirements.map{|k,v| k}
|
24
|
+
expect(values).to eql ["unison", "docker", "docker-sync", "docker-compose"]
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when all requirements are met" do
|
28
|
+
it {
|
29
|
+
allow(@generate).to receive(:binary_present?).with(binary: "unison") { true }
|
30
|
+
allow(@generate).to receive(:binary_present?).with(binary: "docker") { true }
|
31
|
+
allow(@generate).to receive(:binary_present?).with(binary: "docker-sync") { true }
|
32
|
+
allow(@generate).to receive(:binary_present?).with(binary: "docker-compose") { true }
|
33
|
+
|
34
|
+
expect(@generate.check_system_requirements).to be_kind_of Hash
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when NOT all requirements are met" do
|
39
|
+
it {
|
40
|
+
allow(@generate).to receive(:binary_present?).with(binary: "unison") { false }
|
41
|
+
allow(@generate).to receive(:binary_present?).with(binary: "docker") { true }
|
42
|
+
allow(@generate).to receive(:binary_present?).with(binary: "docker-sync") { true }
|
43
|
+
allow(@generate).to receive(:binary_present?).with(binary: "docker-compose") { true }
|
44
|
+
|
45
|
+
expect(@generate.check_system_requirements).to be_kind_of Hash
|
46
|
+
}
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe ".configure" do
|
51
|
+
end
|
52
|
+
|
53
|
+
context "once it's configured" do
|
54
|
+
|
55
|
+
before(:all) do
|
56
|
+
@app_path = "rails_app"
|
57
|
+
|
58
|
+
@config_with_redis = {
|
59
|
+
"ruby-version": "latest",
|
60
|
+
db: :pgsql,
|
61
|
+
db_name: "rails",
|
62
|
+
db_user: "rails",
|
63
|
+
db_password: "rails",
|
64
|
+
redis: true,
|
65
|
+
sidekiq: true
|
66
|
+
}
|
67
|
+
|
68
|
+
@config_without_redis = {
|
69
|
+
"ruby-version": "latest",
|
70
|
+
db: :pgsql,
|
71
|
+
db_name: "rails",
|
72
|
+
db_user: "rails",
|
73
|
+
db_password: "rails",
|
74
|
+
redis: false,
|
75
|
+
sidekiq: false
|
76
|
+
}
|
77
|
+
|
78
|
+
@config_with_mysql = {
|
79
|
+
"ruby-version": "latest",
|
80
|
+
db: :mysql,
|
81
|
+
db_name: "rails",
|
82
|
+
db_user: "rails",
|
83
|
+
db_password: "rails",
|
84
|
+
redis: false,
|
85
|
+
sidekiq: false
|
86
|
+
}
|
87
|
+
|
88
|
+
@generate_with_redis = Dockrails::Generate.new(app_path: @app_path, config: @config_with_redis)
|
89
|
+
@generate_without_redis = Dockrails::Generate.new(app_path: @app_path, config: @config_without_redis)
|
90
|
+
@generate_with_mysql = Dockrails::Generate.new(app_path: @app_path, config: @config_with_mysql)
|
91
|
+
end
|
92
|
+
|
93
|
+
describe ".create_folders" do
|
94
|
+
context "When Redis is not set" do
|
95
|
+
it "should create the data and data/sql folders" do
|
96
|
+
allow(FileUtils).to receive(:mkdir_p).with("data")
|
97
|
+
allow(FileUtils).to receive(:mkdir_p).with("data/sql")
|
98
|
+
@generate_without_redis.create_folders
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "When Redis is set" do
|
103
|
+
it "should create the data, data/sql and data/redis folders" do
|
104
|
+
allow(FileUtils).to receive(:mkdir_p).with("data")
|
105
|
+
allow(FileUtils).to receive(:mkdir_p).with("data/sql")
|
106
|
+
allow(FileUtils).to receive(:mkdir_p).with("data/redis")
|
107
|
+
@generate_with_redis.create_folders
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe ".create_dockerfile" do
|
113
|
+
it "Should create a Dockerfile" do
|
114
|
+
allow(File).to receive(:open).with("Dockerfile", 'w').once
|
115
|
+
@generate_with_redis.create_dockerfile
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe ".create_docker_compose" do
|
120
|
+
it "Should create a docker-compose.yml file" do
|
121
|
+
allow(File).to receive(:open).with("docker-compose.yml", 'w').once
|
122
|
+
@generate_with_redis.create_docker_compose
|
123
|
+
end
|
124
|
+
|
125
|
+
context "When PGSQL is set" do
|
126
|
+
it "Should contain the Pgsql config" do
|
127
|
+
@generate_with_redis.create_docker_compose
|
128
|
+
expect(File.read("docker-compose.yml")).to match /postgres/i
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context "When MySQL is set" do
|
133
|
+
it "Should contain the Mysql config" do
|
134
|
+
@generate_with_mysql.create_docker_compose
|
135
|
+
expect(File.read("docker-compose.yml")).to match /mysql/i
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context "When Redis is not set" do
|
140
|
+
it "Should not contain a Redis node" do
|
141
|
+
@generate_without_redis.create_docker_compose
|
142
|
+
expect(File.read("docker-compose.yml")).not_to match /redis/i
|
143
|
+
end
|
144
|
+
|
145
|
+
it "Should not contain a Sidekiq node" do
|
146
|
+
@generate_without_redis.create_docker_compose
|
147
|
+
expect(File.read("docker-compose.yml")).not_to match /sidekiq/i
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context "When Redis & Sidekiq are set" do
|
152
|
+
it "Should contain a Redis node" do
|
153
|
+
@generate_with_redis.create_docker_compose
|
154
|
+
expect(File.read("docker-compose.yml")).to match /redis/i
|
155
|
+
end
|
156
|
+
|
157
|
+
it "Should contain a Sidekiq node" do
|
158
|
+
@generate_with_redis.create_docker_compose
|
159
|
+
expect(File.read("docker-compose.yml")).to match /sidekiq/i
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe ".create_docker_sync" do
|
165
|
+
it "Should create a docker-sync.yml file" do
|
166
|
+
allow(File).to receive(:open).with("docker-sync.yml", 'w').once
|
167
|
+
@generate_with_redis.create_docker_sync
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe ".create_start_script" do
|
172
|
+
it "Should create a scripts folder and start-dev.sh file" do
|
173
|
+
allow(File).to receive(:open).with("#{@app_path}/scripts/start-dev.sh", 'w').once
|
174
|
+
allow(FileUtils).to receive(:mkdir_p).with("#{@app_path}/scripts").once
|
175
|
+
@generate_with_redis.create_start_script
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
|
4
|
+
require 'commander'
|
5
|
+
require 'commander/methods'
|
6
|
+
require 'pry'
|
7
|
+
require 'fakefs/spec_helpers'
|
8
|
+
|
9
|
+
# Mock terminal IO streams so we can spec against them
|
10
|
+
def mock_terminal
|
11
|
+
@input = StringIO.new
|
12
|
+
@output = StringIO.new
|
13
|
+
$terminal = HighLine.new @input, @output
|
14
|
+
end
|
15
|
+
|
16
|
+
RSpec.configure do |config|
|
17
|
+
config.expect_with :rspec do |c|
|
18
|
+
c.syntax = :expect
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockrails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guillaume Montard
|
@@ -38,6 +38,76 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.2.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
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: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
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: fakefs
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
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: coveralls
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
41
111
|
description: Docker + Rails + Mac + Dev = <3
|
42
112
|
email:
|
43
113
|
executables:
|
@@ -50,6 +120,8 @@ files:
|
|
50
120
|
- lib/dockrails.rb
|
51
121
|
- lib/dockrails/generate.rb
|
52
122
|
- lib/dockrails/version.rb
|
123
|
+
- spec/generate_spec.rb
|
124
|
+
- spec/spec_helper.rb
|
53
125
|
homepage: https://github.com/gmontard/dockrails/
|
54
126
|
licenses:
|
55
127
|
- MIT
|
@@ -74,4 +146,6 @@ rubygems_version: 2.5.2
|
|
74
146
|
signing_key:
|
75
147
|
specification_version: 4
|
76
148
|
summary: Simple CLI to Generate and Run a Rails environment with Docker!
|
77
|
-
test_files:
|
149
|
+
test_files:
|
150
|
+
- spec/generate_spec.rb
|
151
|
+
- spec/spec_helper.rb
|