docker-rails 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +7 -41
- data/lib/docker/rails.rb +0 -1
- data/lib/docker/rails/app.rb +50 -34
- data/lib/docker/rails/cli/main.rb +16 -9
- data/lib/docker/rails/config.rb +0 -40
- data/lib/docker/rails/version.rb +1 -1
- data/spec/docker/rails/config_spec.rb +3 -3
- data/spec/docker/rails/docker-rails.yml +6 -44
- metadata +3 -4
- data/lib/docker/rails/cli/gemset_volume.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0366030b589abebd5315e8fbf308739ed751ab0
|
4
|
+
data.tar.gz: 13156b0a24820cfe5a5be649c6ae00e64a419983
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6a2232fc2f1574603a87dc42a635a38bd9124b0c4749ad12060210ca499c6192b0d7106949f813963b7073002a345501f392358a5e2aacdedfa0792e751c458
|
7
|
+
data.tar.gz: c97c362d3a8bd2d67157375484902fcedf03e49913bede0d45a8fe7e56c459907103e276a89763c18df14d9ef15379781e4b886fc1ad0229cb1fb6f4e796b81d
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,6 @@ A simplified pattern to execute rails applications within Docker (with a CI buil
|
|
9
9
|
- DRY declarative `docker-rails.yml` allowing multiple environments to be defined with an inherited docker `compose` configuration
|
10
10
|
- Provides individual convenience functions `up | bash | stop | extract | cleanup` to easily work with target environment (even in a concurrent situation)
|
11
11
|
- Full workflow for CI usage with automated container, volume, and image cleanup.
|
12
|
-
- Automated cached global gemset data volume (sets up GEM_HOME and `volumes_from` in all targeted containers)
|
13
12
|
- Interpolates variables `docker-compose.yml` making CI builds much easier
|
14
13
|
- DB check CLI function provided for docker-compose `command` to check if db is ready
|
15
14
|
- Configurable exit_code for `ci` - determine which container's exit code will be the result of the process (useful for CI tests)
|
@@ -28,7 +27,6 @@ CI, the reason this is built. Do it all, do it consistently, do it concurrently,
|
|
28
27
|
|
29
28
|
1. `before_command` - run anything on the host prior to building the docker image e.g. `rm -Rf target`
|
30
29
|
1. `compose` - create the resolved `docker-compose.yml`
|
31
|
-
1. `gemset_volume create` - find or create the shared global gems volume for this ruby version
|
32
30
|
1. `build` - `docker-compose build` the configuration
|
33
31
|
1. `up` - `docker-compose up` the configuration
|
34
32
|
1. `cleanup`
|
@@ -79,7 +77,6 @@ Commands:
|
|
79
77
|
docker-rails compose <target> # Writes a resolved docker-compose.yml file e.g. docker-rails compose --build=222 test
|
80
78
|
docker-rails db_check <db> # Runs db_check e.g. bundle exec docker-rails db_check mysql
|
81
79
|
docker-rails exec <target> <service_name> <command> # Run an arbitrary command on a given service container e.g. docker-rails exec --build=222 development db bash
|
82
|
-
docker-rails gemset_volume <command> # Gemset volume management e.g. docker-rails gemset_volume create
|
83
80
|
docker-rails help [COMMAND] # Describe available commands or one specific command
|
84
81
|
docker-rails ps <target> # List containers for the target compose configuration e.g. docker-rails ps --build=222 development
|
85
82
|
docker-rails ps_all # List all remaining containers regardless of state e.g. docker-rails ps_all
|
@@ -112,30 +109,7 @@ Or install it yourself as:
|
|
112
109
|
### 1. Add a Dockerfile
|
113
110
|
|
114
111
|
```bash
|
115
|
-
|
116
|
-
|
117
|
-
ENV DEBIAN_FRONTEND noninteractive
|
118
|
-
|
119
|
-
# For building, nokogiri support, capybara-webkit, mysql client
|
120
|
-
# Clean up APT when done.
|
121
|
-
RUN apt-get update -qq && \
|
122
|
-
apt-get install -qy build-essential libxml2-dev libxslt1-dev g++ qt5-default libqt5webkit5-dev xvfb libmysqlclient-dev && \
|
123
|
-
|
124
|
-
# cleanup
|
125
|
-
apt-get clean && \
|
126
|
-
cd /var/lib/apt/lists && rm -fr *Release* *Sources* *Packages* && \
|
127
|
-
truncate -s 0 /var/log/*log
|
128
|
-
|
129
|
-
COPY . /project # figure out/automate this as a volume instead https://github.com/alienfast/docker-rails/issues/14
|
130
|
-
|
131
|
-
# https://github.com/docker/docker/issues/4032
|
132
|
-
ENV DEBIAN_FRONTEND newt
|
133
|
-
|
134
|
-
# Bypass the union file system for better performance https://docs.docker.com/userguide/dockervolumes/
|
135
|
-
VOLUME /project
|
136
|
-
|
137
|
-
# Copy the project files into the container (again, better performance). Use `extract` in the docker-rails.yml to obtain files such as test results.
|
138
|
-
COPY . /project
|
112
|
+
FIXME
|
139
113
|
```
|
140
114
|
|
141
115
|
### 2. Add a docker-rails.yml
|
@@ -148,24 +122,16 @@ verbose: true
|
|
148
122
|
exit_code: web
|
149
123
|
before_command: bash -c "rm -Rf target && rm -Rf spec/dummy/log"
|
150
124
|
|
151
|
-
# ---
|
152
|
-
# create a global gemset to be shared amongst all ruby 2.2.2 containers.
|
153
|
-
gemset:
|
154
|
-
name: 2.2.2
|
155
|
-
# setup GEM_HOME environment variable and `volumes_from` to mount the global gemset container
|
156
|
-
containers:
|
157
|
-
- web
|
158
|
-
|
159
125
|
# ---
|
160
126
|
# Declare a reusable extract set
|
161
127
|
extractions: &extractions
|
162
128
|
web:
|
163
129
|
extract:
|
164
|
-
- '/
|
165
|
-
- '/
|
166
|
-
- '/
|
167
|
-
- '/
|
168
|
-
- '/
|
130
|
+
- '/app/target'
|
131
|
+
- '/app/vcr'
|
132
|
+
- '/app/spec/dummy/log:spec/dummy'
|
133
|
+
- '/app/tmp/parallel_runtime_cucumber.log:./tmp'
|
134
|
+
- '/app/tmp/parallel_runtime_rspec.log:./tmp'
|
169
135
|
|
170
136
|
|
171
137
|
# ---
|
@@ -181,7 +147,7 @@ elasticsearch: &elasticsearch
|
|
181
147
|
compose:
|
182
148
|
web:
|
183
149
|
build: .
|
184
|
-
working_dir: /
|
150
|
+
working_dir: /app/spec/dummy
|
185
151
|
ports:
|
186
152
|
- "3000"
|
187
153
|
links:
|
data/lib/docker/rails.rb
CHANGED
data/lib/docker/rails/app.rb
CHANGED
@@ -37,6 +37,39 @@ module Docker
|
|
37
37
|
@is_configured = true
|
38
38
|
end
|
39
39
|
|
40
|
+
# Create a dockito vault container for serving private keys
|
41
|
+
# https://github.com/dockito/vault
|
42
|
+
def create_dockito_vault
|
43
|
+
begin
|
44
|
+
Docker::Container.get(dockito_vault_name)
|
45
|
+
puts "Dockito vault container #{dockito_vault_name} already exists."
|
46
|
+
rescue Docker::Error::NotFoundError => e
|
47
|
+
|
48
|
+
# docker run --detach --name vault -p 14242:3000 -v ~/.ssh:/vault/.ssh dockito/vault:latest
|
49
|
+
exec "docker run --detach --name #{dockito_vault_name} -p 14242:3000 -v ~/.ssh:/vault/.ssh dockito/vault:latest"
|
50
|
+
puts "Dockito vault container #{dockito_vault_name} created."
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def rm_dockito_vault
|
55
|
+
begin
|
56
|
+
container = Docker::Container.get(dockito_vault_name)
|
57
|
+
rm_v(container)
|
58
|
+
rescue Docker::Error::NotFoundError => e
|
59
|
+
puts "Dockito vault container #{dockito_vault_name} does not exist."
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# FIXME this needs to by dynamic to this run?
|
64
|
+
def dockito_vault_name
|
65
|
+
'vault' #@config[:dockito][:vault][:name]
|
66
|
+
end
|
67
|
+
|
68
|
+
def dockito_vault_enabled?
|
69
|
+
@config[:dockito][:vault] || false
|
70
|
+
end
|
71
|
+
|
72
|
+
|
40
73
|
def compose
|
41
74
|
# Write a docker-compose.yml with interpolated variables
|
42
75
|
@compose_filename = compose_filename_from project_name
|
@@ -118,7 +151,12 @@ module Docker
|
|
118
151
|
|
119
152
|
def before_command
|
120
153
|
before_command = @config['before_command']
|
121
|
-
(exec before_command unless before_command.nil?)
|
154
|
+
(exec before_command unless before_command.nil?)
|
155
|
+
end
|
156
|
+
|
157
|
+
def after_build_command
|
158
|
+
after_build_command = @config['after_build_command']
|
159
|
+
(exec after_build_command unless after_build_command.nil?)
|
122
160
|
end
|
123
161
|
|
124
162
|
def up(options = '')
|
@@ -191,6 +229,14 @@ module Docker
|
|
191
229
|
puts 'Done.'
|
192
230
|
end
|
193
231
|
|
232
|
+
def rm_exited
|
233
|
+
puts "\n\nCleaning up exited containers..."
|
234
|
+
puts '-----------------------------'
|
235
|
+
|
236
|
+
exec('docker rm -v $(docker ps -a -q -f status=exited)', false, true)
|
237
|
+
puts 'Done.'
|
238
|
+
end
|
239
|
+
|
194
240
|
def run_service_command(service_name, command)
|
195
241
|
# Run the compose configuration
|
196
242
|
exec_compose("run #{service_name} #{command}", false, '', true)
|
@@ -208,28 +254,6 @@ module Docker
|
|
208
254
|
container
|
209
255
|
end
|
210
256
|
|
211
|
-
# Create global gems data volume to cache gems for this version of ruby
|
212
|
-
# https://docs.docker.com/userguide/dockervolumes/
|
213
|
-
def create_gemset_volume
|
214
|
-
begin
|
215
|
-
Docker::Container.get(gemset_volume_name)
|
216
|
-
puts "Gem data volume container #{gemset_volume_name} already exists."
|
217
|
-
rescue Docker::Error::NotFoundError => e
|
218
|
-
|
219
|
-
exec "docker create -v #{gemset_volume_path} --name #{gemset_volume_name} busybox"
|
220
|
-
puts "Gem data volume container #{gemset_volume_name} created."
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
def rm_gemset_volume
|
225
|
-
begin
|
226
|
-
container = Docker::Container.get(gemset_volume_name)
|
227
|
-
rm_v(container)
|
228
|
-
rescue Docker::Error::NotFoundError => e
|
229
|
-
puts "Gem data volume container #{gemset_volume_name} does not exist."
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
257
|
protected
|
234
258
|
|
235
259
|
def exec(cmd, capture = false, ignore_errors = false)
|
@@ -244,7 +268,7 @@ module Docker
|
|
244
268
|
output
|
245
269
|
end
|
246
270
|
|
247
|
-
|
271
|
+
# convenience to execute docker-compose with file and project params
|
248
272
|
def exec_compose(cmd, capture = false, options = '', ignore_errors = false)
|
249
273
|
# in the case of running a bash session, this file may dissappear, just make sure it is there.
|
250
274
|
compose unless File.exists?(@compose_filename)
|
@@ -276,7 +300,7 @@ module Docker
|
|
276
300
|
@verbose ||= (@config['verbose'] unless @config.nil?) || false
|
277
301
|
end
|
278
302
|
|
279
|
-
|
303
|
+
# accessible so that we can delete patterns
|
280
304
|
def compose_filename_from(project_name)
|
281
305
|
"docker-compose-#{project_name}.yml"
|
282
306
|
end
|
@@ -323,7 +347,7 @@ module Docker
|
|
323
347
|
kill(container)
|
324
348
|
end
|
325
349
|
|
326
|
-
|
350
|
+
# kill container, progressively more forceful from -1, -9, then full Chuck Norris.
|
327
351
|
def kill(container)
|
328
352
|
%w(SIGHUP SIGKILL SIGSTOP).each do |signal|
|
329
353
|
if container.up?
|
@@ -345,14 +369,6 @@ module Docker
|
|
345
369
|
container.remove(v: true, force: true)
|
346
370
|
end
|
347
371
|
|
348
|
-
def gemset_volume_name
|
349
|
-
@config[:gemset][:volume][:name]
|
350
|
-
end
|
351
|
-
|
352
|
-
def gemset_volume_path
|
353
|
-
@config[:gemset][:volume][:path]
|
354
|
-
end
|
355
|
-
|
356
372
|
def project_name
|
357
373
|
@config[:project_name]
|
358
374
|
end
|
@@ -9,9 +9,6 @@ module Docker
|
|
9
9
|
desc 'db_check <db>', 'Runs db_check e.g. bundle exec docker-rails db_check mysql'
|
10
10
|
subcommand 'db_check', Docker::Rails::CLI::DbCheck
|
11
11
|
|
12
|
-
desc 'gemset_volume <command>', 'Gemset volume management e.g. docker-rails gemset_volume create'
|
13
|
-
subcommand 'gemset_volume', Docker::Rails::CLI::GemsetVolume
|
14
|
-
|
15
12
|
desc 'ci <target>', 'Execute the works, everything with cleanup included e.g. docker-rails ci --build=222 test'
|
16
13
|
long_desc <<-D
|
17
14
|
|
@@ -26,7 +23,6 @@ module Docker
|
|
26
23
|
|
27
24
|
invoke :before, [target], []
|
28
25
|
invoke :compose, [target], []
|
29
|
-
invoke CLI::GemsetVolume, :create, [target], options
|
30
26
|
begin
|
31
27
|
invoke :build # on CI - always build to ensure dockerfile hasn't been altered - small price to pay for consistent CI.
|
32
28
|
invoke :up
|
@@ -53,7 +49,7 @@ module Docker
|
|
53
49
|
invoke :extract if options[:extract]
|
54
50
|
invoke :rm_volumes
|
55
51
|
invoke :rm_compose
|
56
|
-
invoke :rm_dangling
|
52
|
+
# invoke :rm_dangling # causes a brand new dockerfile build - don't do that. See https://github.com/alienfast/docker-rails/issues/26
|
57
53
|
invoke :ps_all
|
58
54
|
end
|
59
55
|
|
@@ -66,7 +62,6 @@ module Docker
|
|
66
62
|
base_options = options.except(:detached)
|
67
63
|
|
68
64
|
invoke :before, [target], base_options
|
69
|
-
invoke CLI::GemsetVolume, :create, [target], base_options
|
70
65
|
|
71
66
|
if options[:detached]
|
72
67
|
compose_options = '-d'
|
@@ -81,7 +76,14 @@ module Docker
|
|
81
76
|
|
82
77
|
def build(target)
|
83
78
|
invoke :compose
|
84
|
-
App.configured(target, options)
|
79
|
+
app = App.configured(target, options)
|
80
|
+
app.create_dockito_vault
|
81
|
+
begin
|
82
|
+
app.compose_build
|
83
|
+
ensure
|
84
|
+
app.rm_dockito_vault
|
85
|
+
app.after_build_command
|
86
|
+
end
|
85
87
|
end
|
86
88
|
|
87
89
|
desc 'compose <target>', 'Writes a resolved docker-compose.yml file e.g. docker-rails compose --build=222 test'
|
@@ -124,6 +126,12 @@ module Docker
|
|
124
126
|
App.instance.rm_dangling
|
125
127
|
end
|
126
128
|
|
129
|
+
desc 'rm_exited', 'Remove exited containers e.g. docker-rails rm_exited'
|
130
|
+
|
131
|
+
def rm_exited(build = nil, target = nil)
|
132
|
+
App.instance.rm_exited
|
133
|
+
end
|
134
|
+
|
127
135
|
desc 'ps <target>', 'List containers for the target compose configuration e.g. docker-rails ps --build=222 development'
|
128
136
|
|
129
137
|
def ps(target)
|
@@ -137,7 +145,7 @@ module Docker
|
|
137
145
|
App.instance.ps_all
|
138
146
|
end
|
139
147
|
|
140
|
-
desc 'bash_connect <target> <service_name>', 'Open a bash shell to a running container (with automatic cleanup) e.g. docker-rails
|
148
|
+
desc 'bash_connect <target> <service_name>', 'Open a bash shell to a running container (with automatic cleanup) e.g. docker-rails bash_connect --build=222 development db'
|
141
149
|
|
142
150
|
def bash_connect(target, service_name)
|
143
151
|
# init singleton with full options
|
@@ -160,7 +168,6 @@ module Docker
|
|
160
168
|
app = App.configured(target, options)
|
161
169
|
|
162
170
|
invoke :compose, [target], []
|
163
|
-
invoke CLI::GemsetVolume, :create, [target], []
|
164
171
|
|
165
172
|
app.run_service_command(service_name, command)
|
166
173
|
end
|
data/lib/docker/rails/config.rb
CHANGED
@@ -60,10 +60,6 @@ module Docker
|
|
60
60
|
generated_defaults = {compose: {}}
|
61
61
|
compose = generated_defaults[:compose]
|
62
62
|
|
63
|
-
# ----
|
64
|
-
# gemset volume
|
65
|
-
generate_gemset(compose, unpruned_config, generated_defaults, filenames)
|
66
|
-
|
67
63
|
# now add the generated to the seeded default configuration
|
68
64
|
@default_configuration.merge!(generated_defaults)
|
69
65
|
|
@@ -73,42 +69,6 @@ module Docker
|
|
73
69
|
# finally, load the config as internal state
|
74
70
|
super(environment, *filenames)
|
75
71
|
end
|
76
|
-
|
77
|
-
protected
|
78
|
-
|
79
|
-
def generate_gemset(compose, unpruned_config, generated_defaults, filenames)
|
80
|
-
gemset = unpruned_config[:gemset]
|
81
|
-
raise "Expected to find 'gemset:' in #{filenames}" if gemset.nil?
|
82
|
-
|
83
|
-
gemset_name = gemset[:name]
|
84
|
-
raise "Expected to find 'gemset: name' in #{filenames}" if gemset_name.nil?
|
85
|
-
|
86
|
-
# add the generated gemset name/path to the generated defaults
|
87
|
-
gemset_volume_path = "/gemset/#{gemset_name}"
|
88
|
-
gemset_volume_name = "gemset-#{gemset_name}"
|
89
|
-
|
90
|
-
generated_defaults.deeper_merge!(gemset: gemset)
|
91
|
-
generated_defaults[:gemset].deeper_merge!({
|
92
|
-
volume: {
|
93
|
-
name: gemset_volume_name,
|
94
|
-
path: gemset_volume_path
|
95
|
-
}
|
96
|
-
|
97
|
-
})
|
98
|
-
|
99
|
-
raise "Expected to find 'gemset: containers' with at least one entry" if gemset[:containers].nil? || gemset[:containers].length < 1
|
100
|
-
gemset[:containers].each do |container|
|
101
|
-
raise "Unknown container #{container}" if unpruned_config[:compose][container.to_sym].nil?
|
102
|
-
compose[container.to_sym] ||= {}
|
103
|
-
compose[container.to_sym].deeper_merge! ({
|
104
|
-
environment: [
|
105
|
-
"GEM_HOME=#{gemset_volume_path}",
|
106
|
-
"BUNDLE_PATH=#{gemset_volume_path}",
|
107
|
-
],
|
108
|
-
volumes_from: [gemset_volume_name]
|
109
|
-
})
|
110
|
-
end
|
111
|
-
end
|
112
72
|
end
|
113
73
|
end
|
114
74
|
end
|
data/lib/docker/rails/version.rb
CHANGED
@@ -81,9 +81,9 @@ describe Docker::Rails::Config do
|
|
81
81
|
compose_config
|
82
82
|
}
|
83
83
|
|
84
|
-
it 'web should have
|
85
|
-
expect(compose_config[:web][:environment]).to include('
|
86
|
-
expect(compose_config[:web][:
|
84
|
+
it 'web should have env and wd' do
|
85
|
+
expect(compose_config[:web][:environment]).to include('RAILS_ENV=development')
|
86
|
+
expect(compose_config[:web][:working_dir]).to include('/app')
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
@@ -2,53 +2,15 @@ verbose: true
|
|
2
2
|
before_command: bash -c "rm -Rf target && rm -Rf log"
|
3
3
|
exit_code: web
|
4
4
|
|
5
|
-
# create a global gemset to be shared amongst all ruby 2.2.2 containers.
|
6
|
-
gemset:
|
7
|
-
name: 2.2.2
|
8
|
-
# setup GEM_HOME environment variable and `volumes_from` to mount the global gemset container
|
9
|
-
containers:
|
10
|
-
- web
|
11
|
-
|
12
|
-
# Generated:
|
13
|
-
#compose:
|
14
|
-
# web:
|
15
|
-
# environment:
|
16
|
-
# # Tell bundler where to get the files
|
17
|
-
# - GEM_HOME=/gemset/2.2.2
|
18
|
-
#
|
19
|
-
# volumes_from:
|
20
|
-
# # Mount the gems data volume container for cached bundler gem files
|
21
|
-
# - gemset-2.2.2
|
22
|
-
|
23
|
-
|
24
|
-
# Make the host user's id_rsa key available to the web container e.g. for cloning from github
|
25
|
-
ssh-agent:
|
26
|
-
containers:
|
27
|
-
- web
|
28
|
-
keys:
|
29
|
-
- id_rsa
|
30
|
-
|
31
|
-
# Generated:
|
32
|
-
#compose:
|
33
|
-
# web:
|
34
|
-
# environment:
|
35
|
-
# # make ssh keys available via ssh forwarding (see volume entry)
|
36
|
-
# - SSH_AUTH_SOCK=/ssh-agent/socket
|
37
|
-
#
|
38
|
-
# volumes_from:
|
39
|
-
# # Use configured whilp/ssh-agent long running container for keys
|
40
|
-
# - ssh-agent
|
41
|
-
|
42
|
-
|
43
5
|
# shared extractions
|
44
6
|
extractions: &extractions
|
45
7
|
web:
|
46
8
|
extract:
|
47
|
-
- '/
|
48
|
-
- '/
|
49
|
-
- '/
|
50
|
-
- '/
|
51
|
-
- '/
|
9
|
+
- '/app/target'
|
10
|
+
- '/app/vcr'
|
11
|
+
- '/app/tmp/parallel_runtime_cucumber.log:./tmp'
|
12
|
+
- '/app/tmp/parallel_runtime_rspec.log:./tmp'
|
13
|
+
- '/app/log'
|
52
14
|
|
53
15
|
# local environments need elasticsearch, staging/production connects to existing running instance.
|
54
16
|
elasticsearch: &elasticsearch
|
@@ -192,7 +154,7 @@ compose:
|
|
192
154
|
|
193
155
|
web:
|
194
156
|
build: .
|
195
|
-
working_dir: /
|
157
|
+
working_dir: /app
|
196
158
|
ports:
|
197
159
|
- "3000"
|
198
160
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Ross
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -158,7 +158,6 @@ files:
|
|
158
158
|
- lib/docker/rails.rb
|
159
159
|
- lib/docker/rails/app.rb
|
160
160
|
- lib/docker/rails/cli/db_check.rb
|
161
|
-
- lib/docker/rails/cli/gemset_volume.rb
|
162
161
|
- lib/docker/rails/cli/main.rb
|
163
162
|
- lib/docker/rails/compose_config.rb
|
164
163
|
- lib/docker/rails/config.rb
|
@@ -188,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
187
|
version: '0'
|
189
188
|
requirements: []
|
190
189
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
190
|
+
rubygems_version: 2.6.7
|
192
191
|
signing_key:
|
193
192
|
specification_version: 4
|
194
193
|
summary: A simplified pattern to execute rails applications within Docker (with a
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Docker
|
2
|
-
module Rails
|
3
|
-
module CLI
|
4
|
-
class GemsetVolume < Thor
|
5
|
-
desc 'create', 'Create a gemset volume'
|
6
|
-
def create(target = nil)
|
7
|
-
App.configured(target, options).create_gemset_volume
|
8
|
-
end
|
9
|
-
|
10
|
-
desc 'rm', 'Remove a gemset volume'
|
11
|
-
def rm(target = nil)
|
12
|
-
App.configured(target, options).rm_gemset_volume
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|