orchestration 0.5.1 → 0.5.6
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 +4 -4
- data/README.md +19 -12
- data/lib/orchestration.rb +2 -1
- data/lib/orchestration/docker_compose/app_service.rb +1 -1
- data/lib/orchestration/docker_healthcheck.rb +47 -46
- data/lib/orchestration/environment.rb +1 -1
- data/lib/orchestration/service_check.rb +1 -9
- data/lib/orchestration/templates/Dockerfile.erb +2 -2
- data/lib/orchestration/templates/application.mk.erb +3 -1
- data/lib/orchestration/templates/deploy.mk.erb +2 -2
- data/lib/orchestration/templates/env.erb +4 -7
- data/lib/orchestration/templates/makefile_macros.mk.erb +13 -11
- data/lib/orchestration/templates/orchestration.mk.erb +37 -14
- data/lib/orchestration/version.rb +1 -1
- data/lib/tasks/orchestration.rake +1 -1
- metadata +2 -5
- data/bin/rspec +0 -29
- data/bin/rubocop +0 -29
- data/bin/strong_versions +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de4a4ad1a3d892e6177e6a4397ed5daafbc2ea14d2183600a39103624b40f5c6
|
4
|
+
data.tar.gz: 38c8b982edd2468d9fc034eedaf841b7074d5775483aa5d5761ee58eef646ac7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5054562d388aec2a51995729db9b5e291ebfddbc490e2d030e5f9de5a6a4642bcf97cfa274d20ec77289f8a350c467872a8046f69adcf11728962192b95e2ef
|
7
|
+
data.tar.gz: 7142310c047fdef7c19b210a0a4139cfdd751e6a2f23584135bf01adabb23cacf4f1d53daa8021ad52c803a16ea8453c5f383b8236870feaf758d5b8dda00827
|
data/README.md
CHANGED
@@ -1,13 +1,5 @@
|
|
1
1
|
# Orchestration
|
2
2
|
|
3
|
-
```
|
4
|
-
I've got two tickets to the game
|
5
|
-
It'd be great if I could take you to it this Sunday
|
6
|
-
--Nickelback
|
7
|
-
```
|
8
|
-
|
9
|
-
## Overview
|
10
|
-
|
11
3
|
_Orchestration_ aims to provide a convenient and consistent process for working with _Rails_ and _Docker_ without obscuring underlying components.
|
12
4
|
|
13
5
|
At its core _Orchestration_ is simply a `Makefile` and a set of `docker-compose.yml` files with sensible, general-purpose default settings. Users are encouraged to tailor the generated build-out to suit their application; once the build-out has been generated it belongs to the application.
|
@@ -35,7 +27,7 @@ The below screenshot demonstrates _Orchestration_ being installed in a brand new
|
|
35
27
|
Add _Orchestration_ to your Gemfile:
|
36
28
|
|
37
29
|
```ruby
|
38
|
-
gem 'orchestration', '~> 0.5.
|
30
|
+
gem 'orchestration', '~> 0.5.6'
|
39
31
|
```
|
40
32
|
|
41
33
|
Install:
|
@@ -143,7 +135,20 @@ Note that `git archive` is used to generate the build context. Any uncommitted c
|
|
143
135
|
make build
|
144
136
|
```
|
145
137
|
|
146
|
-
|
138
|
+
The `include` option can also be passed to provide a manifest file. Any files listed in this file will also be built into the _Docker_ image. Files **must** be located within the project directory.
|
139
|
+
|
140
|
+
```bash
|
141
|
+
make build include=manifest.txt
|
142
|
+
```
|
143
|
+
|
144
|
+
```bash
|
145
|
+
# manifest.txt
|
146
|
+
doc/api/swagger.json
|
147
|
+
doc/api/soap.xml
|
148
|
+
doc/api/doc.html
|
149
|
+
```
|
150
|
+
|
151
|
+
See also [build environment](#build-environment) if you use gems hosted on private _GitHub_/_Bitbucket_ repositories.
|
147
152
|
|
148
153
|
#### Push latest image
|
149
154
|
|
@@ -222,6 +227,8 @@ To connect via _SSH_ to a remote swarm and deploy, pass the `manager` parameter:
|
|
222
227
|
make deploy manager=user@manager.swarm.example.com
|
223
228
|
```
|
224
229
|
|
230
|
+
The file `orchestration/docker-compose.production.yml` is created automatically. If your `RAILS_ENV` is set to something other than `production` then another file will need to be created (e.g. `orchestration/docker-compose.staging.yml`). In most cases this file can be a _symlink_ to the original `production` configuration and environment variables can be used to customise the content.
|
231
|
+
|
225
232
|
#### Roll back a deployment
|
226
233
|
|
227
234
|
Roll back the `app` service of your stack:
|
@@ -265,7 +272,7 @@ Note that the following two variables _must_ be set in the relevant `.env` file
|
|
265
272
|
|
266
273
|
```
|
267
274
|
# Published port for your application service:
|
268
|
-
|
275
|
+
PUBLISH_PORT=3000
|
269
276
|
|
270
277
|
# Number of replicas of your application service:
|
271
278
|
REPLICAS=5
|
@@ -320,7 +327,7 @@ See related documentation:
|
|
320
327
|
| `WEB_HEALTHCHECK_PATH` | Path expected to return a successful response | `/` |
|
321
328
|
| `WEB_HEALTHCHECK_READ_TIMEOUT` | Number of seconds to wait for data before failing healthcheck | `10` |
|
322
329
|
| `WEB_HEALTHCHECK_OPEN_TIMEOUT` | Number of seconds to wait for connection before failing healthcheck | `10` |
|
323
|
-
| `WEB_HEALTHCHECK_SUCCESS_CODES` | Comma-separated list of HTTP status codes that will be deemed a success | `200,202,204` |
|
330
|
+
| `WEB_HEALTHCHECK_SUCCESS_CODES` | Comma-separated list of HTTP status codes that will be deemed a success | `200,201,202,204` |
|
324
331
|
|
325
332
|
If your application does not have a suitable always-available route to use as a healthcheck, the following one-liner may be useful:
|
326
333
|
|
data/lib/orchestration.rb
CHANGED
@@ -11,7 +11,7 @@ require 'paint'
|
|
11
11
|
begin
|
12
12
|
require 'rails'
|
13
13
|
rescue LoadError
|
14
|
-
warn('[orchestration]
|
14
|
+
warn('[orchestration] Running in non-Rails mode.')
|
15
15
|
end
|
16
16
|
|
17
17
|
I18n.load_path += Dir[File.join(File.expand_path('..', __dir__),
|
@@ -22,6 +22,7 @@ require 'orchestration/file_helpers'
|
|
22
22
|
require 'orchestration/docker_compose'
|
23
23
|
require 'orchestration/environment'
|
24
24
|
require 'orchestration/errors'
|
25
|
+
require 'orchestration/docker_healthcheck'
|
25
26
|
require 'orchestration/install_generator'
|
26
27
|
require 'orchestration/railtie' if defined?(Rails)
|
27
28
|
require 'orchestration/service_check'
|
@@ -1,64 +1,65 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'net/http'
|
4
|
+
module Orchestration
|
5
|
+
class DockerHealthcheck
|
6
|
+
def self.execute
|
7
|
+
new.execute
|
8
|
+
end
|
4
9
|
|
5
|
-
|
6
|
-
|
7
|
-
new.execute
|
8
|
-
end
|
9
|
-
|
10
|
-
def execute
|
11
|
-
return_code = 1
|
10
|
+
def execute
|
11
|
+
return_code = 1
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
# rubocop:disable Lint/RescueException
|
14
|
+
begin
|
15
|
+
response = run
|
16
|
+
return_code = 0 if success?(response.code)
|
17
|
+
puts message(response.code)
|
18
|
+
rescue Exception => e
|
19
|
+
puts "[#{__FILE__}] ERROR: #{e.inspect}"
|
20
|
+
ensure
|
21
|
+
exit return_code
|
22
|
+
end
|
23
|
+
# rubocop:enable Lint/RescueException
|
22
24
|
end
|
23
|
-
# rubocop:enable Lint/RescueException
|
24
|
-
end
|
25
25
|
|
26
|
-
|
26
|
+
private
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
def run
|
29
|
+
client = Net::HTTP.new(
|
30
|
+
ENV.fetch('WEB_HOST', 'localhost'),
|
31
|
+
ENV.fetch('WEB_PORT', '8080').to_i
|
32
|
+
)
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
client.read_timeout = ENV.fetch('WEB_HEALTHCHECK_READ_TIMEOUT', '10').to_i
|
35
|
+
client.open_timeout = ENV.fetch('WEB_HEALTHCHECK_OPEN_TIMEOUT', '10').to_i
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
client.start do |request|
|
38
|
+
request.get(ENV.fetch('WEB_HEALTHCHECK_PATH') { '/' })
|
39
|
+
end
|
39
40
|
end
|
40
|
-
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
def success?(code)
|
47
|
-
success_codes.include?(code.to_s)
|
48
|
-
end
|
42
|
+
def success_codes
|
43
|
+
ENV.fetch('WEB_HEALTHCHECK_SUCCESS_CODES', '200,201,202,204').split(',')
|
44
|
+
end
|
49
45
|
|
50
|
-
|
51
|
-
|
52
|
-
outcome = 'SUCCESS ✓ '
|
53
|
-
in_or_not = 'IN'
|
54
|
-
else
|
55
|
-
outcome = 'FAILURE ✘ '
|
56
|
-
in_or_not = 'NOT IN'
|
46
|
+
def success?(code)
|
47
|
+
success_codes.include?(code.to_s)
|
57
48
|
end
|
58
49
|
|
59
|
-
|
60
|
-
|
50
|
+
def message(code)
|
51
|
+
if success?(code)
|
52
|
+
outcome = 'SUCCESS ✓ '
|
53
|
+
in_or_not = 'IN'
|
54
|
+
else
|
55
|
+
outcome = 'FAILURE ✘ '
|
56
|
+
in_or_not = 'NOT IN'
|
57
|
+
end
|
61
58
|
|
62
|
-
|
59
|
+
accepted = success_codes.join(', ')
|
60
|
+
message = "#{in_or_not} [#{accepted}] : #{outcome} [#{__FILE__}]"
|
61
|
+
|
62
|
+
"# HTTP_STATUS(#{code}) #{message}"
|
63
|
+
end
|
63
64
|
end
|
64
65
|
end
|
@@ -16,7 +16,7 @@ module Orchestration
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def run
|
19
|
-
return
|
19
|
+
return unless @service.configuration.configured?
|
20
20
|
|
21
21
|
echo_start
|
22
22
|
success = attempt_connection
|
@@ -39,14 +39,6 @@ module Orchestration
|
|
39
39
|
false
|
40
40
|
end
|
41
41
|
|
42
|
-
def echo_missing
|
43
|
-
@terminal.write(
|
44
|
-
@service_name.to_sym,
|
45
|
-
"#{@service.configuration.error} (skipping)",
|
46
|
-
:error
|
47
|
-
)
|
48
|
-
end
|
49
|
-
|
50
42
|
def echo_start
|
51
43
|
@terminal.write(@service_name.to_sym, '', :status)
|
52
44
|
end
|
@@ -20,10 +20,10 @@ COPY .build/Gemfile .build/Gemfile.lock ./
|
|
20
20
|
RUN bundle install --without development test --deployment
|
21
21
|
<% if defined?(Webpacker) %>
|
22
22
|
COPY .build/package.json .build/yarn.lock ./
|
23
|
-
RUN . /root/.bashrc
|
23
|
+
RUN . /root/.bashrc ; yarn install
|
24
24
|
<% end %>
|
25
25
|
ADD .build/context.tar .
|
26
|
-
<% if defined?(Webpacker) %>RUN . /root/.bashrc
|
26
|
+
<% if defined?(Webpacker) %>RUN . /root/.bashrc ; NODE_ENV=production RAILS_ENV=production yarn install && NODE_ENV=production RAILS_ENV=production SECRET_KEY_BASE=abc123 bundle exec rake assets:precompile<% elsif Rake::Task.tasks.map(&:name).include?('assets:precompile') %>RUN NODE_ENV=production RAILS_ENV=production SECRET_KEY_BASE=abc123 bundle exec rake assets:precompile<% end %>
|
27
27
|
RUN echo "${GIT_COMMIT}" > /app/GIT_COMMIT
|
28
28
|
HEALTHCHECK --interval=<%= healthcheck['interval'] %> \
|
29
29
|
--timeout=<%= healthcheck['timeout'] %> \
|
@@ -15,8 +15,10 @@ test: test-setup
|
|
15
15
|
|
16
16
|
# Start development containers and create/migrate/seed database
|
17
17
|
.PHONY: develop
|
18
|
-
develop:
|
18
|
+
develop:
|
19
19
|
bundle install
|
20
|
+
@$(MAKE) start env=test
|
21
|
+
@$(MAKE) start env=development
|
20
22
|
bundle exec rake db:create
|
21
23
|
bundle exec rake db:migrate
|
22
24
|
bundle exec rake db:seed
|
@@ -1,7 +1,4 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
#
|
5
|
-
# Use this setting to control the number of replicas to create for your
|
6
|
-
# application service:
|
7
|
-
REPLICAS=1
|
1
|
+
# Set any development environment variables here
|
2
|
+
# e.g.:
|
3
|
+
#
|
4
|
+
# DISABLE_SPRING=1
|
@@ -87,17 +87,19 @@ restore_env:=( \
|
|
87
87
|
|
88
88
|
key_chars:=[a-zA-Z0-9_]
|
89
89
|
censored:=**********
|
90
|
-
censor=
|
91
|
-
censor_urls:=
|
92
|
-
format_env
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
90
|
+
censor=s/\(^${key_chars}*$(1)${key_chars}*\)=\(.*\)$$/\1=${censored}/
|
91
|
+
censor_urls:=s|\([a-zA-Z0-9_+]\+://.*:\).*\(@.*\)$$|\1${censored}\2|
|
92
|
+
format_env:=sed '$(call censor,SECRET); \
|
93
|
+
$(call censor,TOKEN); \
|
94
|
+
$(call censor,PRIVATE); \
|
95
|
+
$(call censor,KEY); \
|
96
|
+
$(censor_urls); \
|
97
|
+
/^\s*$$/d; \
|
98
|
+
/^\s*\#/d; \
|
99
|
+
s/\(^[a-zA-Z0-9_]\+\)=/${blue}\1${reset}=/; \
|
100
|
+
s/^/ /; \
|
101
|
+
s/=\(.*\)$$/=${yellow}\1${reset}/' | \
|
102
|
+
sort
|
101
103
|
|
102
104
|
fail=( \
|
103
105
|
$(call printraw,' ${cross}') ; \
|
@@ -38,9 +38,15 @@ ifneq (,$(wildcard ${env_file}))
|
|
38
38
|
rake=. ${env_file} && ${rake_cmd}
|
39
39
|
endif
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
ifeq (,$(findstring serve,$(MAKECMDGOALS)))
|
42
|
+
ifeq (,$(findstring console,$(MAKECMDGOALS)))
|
43
|
+
ifeq (,$(findstring test,$(MAKECMDGOALS)))
|
44
|
+
docker_config:=$(shell ${rake} orchestration:config)
|
45
|
+
docker_organization=$(word 1,$(docker_config))
|
46
|
+
docker_repository=$(word 2,$(docker_config))
|
47
|
+
endif
|
48
|
+
endif
|
49
|
+
endif
|
44
50
|
|
45
51
|
ifeq (,$(project_name))
|
46
52
|
project_base = ${docker_repository}_${env}
|
@@ -74,7 +80,9 @@ else
|
|
74
80
|
compose_project_name = ${project_base}
|
75
81
|
endif
|
76
82
|
|
77
|
-
compose_base=env
|
83
|
+
compose_base=env -i \
|
84
|
+
PATH=$(PATH) \
|
85
|
+
HOST_UID=$(shell id -u) \
|
78
86
|
DOCKER_ORGANIZATION="${docker_organization}" \
|
79
87
|
DOCKER_REPOSITORY="${docker_repository}" \
|
80
88
|
COMPOSE_PROJECT_NAME="${compose_project_name}" \
|
@@ -106,8 +114,8 @@ all: build
|
|
106
114
|
ifndef network
|
107
115
|
start: network := ${compose_project_name}_default
|
108
116
|
endif
|
109
|
-
start: _clean-logs
|
110
|
-
@$(call print,'${yellow}Starting containers${reset} ...')
|
117
|
+
start: _create-log-directory _clean-logs
|
118
|
+
@$(call print,'${yellow}Starting ${cyan}${env}${yellow} containers${reset} ...')
|
111
119
|
ifeq (${env},$(filter ${env},test development))
|
112
120
|
@${compose} up --detach --force-recreate --renew-anon-volumes --remove-orphans ${services} ${log} || ${fail}
|
113
121
|
@[ -n '${sidecar}' ] && \
|
@@ -138,7 +146,7 @@ start-<%= service %>:
|
|
138
146
|
.PHONY: stop
|
139
147
|
stop: network := ${compose_project_name}_default
|
140
148
|
stop:
|
141
|
-
@$(call print,'${yellow}Stopping containers${reset} ...')
|
149
|
+
@$(call print,'${yellow}Stopping ${cyan}${env}${yellow} containers${reset} ...')
|
142
150
|
@if docker ps --format "{{.ID}}" | grep -q $(shell hostname) ; \
|
143
151
|
then \
|
144
152
|
( docker network disconnect ${network} $(shell hostname) ${log} || : ) \
|
@@ -171,7 +179,7 @@ serve:
|
|
171
179
|
then ( \
|
172
180
|
$(call println,'${yellow}Environment${reset}: ${green}${env_file}${reset}') && \
|
173
181
|
cat '${env_file}' | ${format_env} && \
|
174
|
-
$(call
|
182
|
+
$(call printrawln,'') \
|
175
183
|
) ; \
|
176
184
|
fi
|
177
185
|
${rails}
|
@@ -184,7 +192,7 @@ console:
|
|
184
192
|
then ( \
|
185
193
|
$(call println,'${yellow}Environment${reset}: ${green}${env_file}${reset}') && \
|
186
194
|
cat '${env_file}' | ${format_env} && \
|
187
|
-
$(call
|
195
|
+
$(call printrawln,'') \
|
188
196
|
) ; \
|
189
197
|
fi
|
190
198
|
${rails} console
|
@@ -210,7 +218,7 @@ endif
|
|
210
218
|
dump:
|
211
219
|
ifndef verbose
|
212
220
|
@$(call println)
|
213
|
-
@$(call println,'${yellow}Captured${reset} ${green}stdout${reset} ${yellow}and${reset} ${red}stderr${reset} ${yellow}log data${reset}:')
|
221
|
+
@$(call println,'${yellow}Captured${reset} ${green}stdout${reset} ${yellow}and${reset} ${red}stderr${reset} ${yellow}log data [${cyan}${env}${yellow}]${reset}:')
|
214
222
|
@$(call println)
|
215
223
|
@echo
|
216
224
|
@test -f '${stdout}' && ( \
|
@@ -268,7 +276,7 @@ deploy:
|
|
268
276
|
ifndef manager
|
269
277
|
@$(call println_error,'Missing `manager` parameter: `make deploy manager=swarm-manager.example.com`') ; exit 1
|
270
278
|
endif
|
271
|
-
@$(call println,'${yellow}Deploying stack via${reset} ${green}${manager}${reset} ...') && \
|
279
|
+
@$(call println,'${yellow}Deploying ${green}${env}${reset} stack via${reset} ${green}${manager}${reset} ...') && \
|
272
280
|
( \
|
273
281
|
$(call make,bundle path='${path}/bundle.tar') ${log} && \
|
274
282
|
cd '${path}' ${log} && \
|
@@ -316,8 +324,9 @@ wait-listener:
|
|
316
324
|
### Docker build commands ###
|
317
325
|
|
318
326
|
.PHONY: build
|
319
|
-
build:
|
320
|
-
build:
|
327
|
+
build: build_dir = ${orchestration_dir}/.build
|
328
|
+
build: context = ${build_dir}/context.tar
|
329
|
+
build: _create-log-directory check-local-changes
|
321
330
|
@$(call print,'${yellow}Preparing build context from${reset} ${cyan}${git_branch}:${git_version}${reset} ... ')
|
322
331
|
@mkdir -p ${orchestration_dir}/.build ${log} || ${fail}
|
323
332
|
ifndef dev
|
@@ -330,6 +339,16 @@ else
|
|
330
339
|
@tar -cvf '${context}' . ${log} || ${fail}
|
331
340
|
endif
|
332
341
|
@$(call printrawln,'${green}complete.${reset} ${tick}')
|
342
|
+
ifdef include
|
343
|
+
@$(call print,'${yellow}Including files from:${reset} ${cyan}${include}${reset} ...')
|
344
|
+
@(while read line; do \
|
345
|
+
export line; \
|
346
|
+
include_dir="${build_dir}/$$(dirname "$${line}")/" && \
|
347
|
+
mkdir -p "$${include_dir}" && cp "$${line}" "$${include_dir}" \
|
348
|
+
&& (cd '${orchestration_dir}/.build/' && tar rf 'context.tar' "$${line}"); \
|
349
|
+
done < '${include}') ${log} || ${fail}
|
350
|
+
@$(call printrawln,' ${green}complete.${reset} ${tick}')
|
351
|
+
endif
|
333
352
|
ifdef sidecar
|
334
353
|
# Assume we are in a line-buffered environment (e.g. Jenkins)
|
335
354
|
@$(call println,'${yellow}Building image${reset} ...')
|
@@ -348,7 +367,7 @@ endif
|
|
348
367
|
@$(call println,'[${green}tag${reset}] ${cyan}${docker_organization}/${docker_repository}:${git_version}${reset}')
|
349
368
|
|
350
369
|
.PHONY: push
|
351
|
-
push:
|
370
|
+
push: _create-log-directory
|
352
371
|
@$(call print,'${yellow}Pushing${reset} ${cyan}${docker_image}${reset} ...')
|
353
372
|
@docker push ${docker_image} ${log_progress} || ${fail}
|
354
373
|
@$(call printrawln,' ${green}complete${reset}. ${tick}')
|
@@ -370,3 +389,7 @@ endif
|
|
370
389
|
_clean-logs:
|
371
390
|
@rm -f '${stdout}' '${stderr}'
|
372
391
|
@touch '${stdout}' '${stderr}'
|
392
|
+
|
393
|
+
.PHONY: _create-log-directory
|
394
|
+
_create-log-directory:
|
395
|
+
@mkdir -p log
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orchestration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Farrell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: database_url
|
@@ -322,10 +322,7 @@ files:
|
|
322
322
|
- README.md
|
323
323
|
- Rakefile
|
324
324
|
- bin/console
|
325
|
-
- bin/rspec
|
326
|
-
- bin/rubocop
|
327
325
|
- bin/setup
|
328
|
-
- bin/strong_versions
|
329
326
|
- config/locales/en.yml
|
330
327
|
- doc/images/example.png
|
331
328
|
- lib/Rakefile
|
data/bin/rspec
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
#
|
5
|
-
# This file was generated by Bundler.
|
6
|
-
#
|
7
|
-
# The application 'rspec' is installed as part of a gem, and
|
8
|
-
# this file is here to facilitate running it.
|
9
|
-
#
|
10
|
-
|
11
|
-
require "pathname"
|
12
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
-
Pathname.new(__FILE__).realpath)
|
14
|
-
|
15
|
-
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
-
|
17
|
-
if File.file?(bundle_binstub)
|
18
|
-
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
-
load(bundle_binstub)
|
20
|
-
else
|
21
|
-
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
-
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
require "rubygems"
|
27
|
-
require "bundler/setup"
|
28
|
-
|
29
|
-
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/rubocop
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
#
|
5
|
-
# This file was generated by Bundler.
|
6
|
-
#
|
7
|
-
# The application 'rubocop' is installed as part of a gem, and
|
8
|
-
# this file is here to facilitate running it.
|
9
|
-
#
|
10
|
-
|
11
|
-
require "pathname"
|
12
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
-
Pathname.new(__FILE__).realpath)
|
14
|
-
|
15
|
-
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
-
|
17
|
-
if File.file?(bundle_binstub)
|
18
|
-
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
-
load(bundle_binstub)
|
20
|
-
else
|
21
|
-
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
-
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
require "rubygems"
|
27
|
-
require "bundler/setup"
|
28
|
-
|
29
|
-
load Gem.bin_path("rubocop", "rubocop")
|
data/bin/strong_versions
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
#
|
5
|
-
# This file was generated by Bundler.
|
6
|
-
#
|
7
|
-
# The application 'strong_versions' is installed as part of a gem, and
|
8
|
-
# this file is here to facilitate running it.
|
9
|
-
#
|
10
|
-
|
11
|
-
require "pathname"
|
12
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
-
Pathname.new(__FILE__).realpath)
|
14
|
-
|
15
|
-
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
-
|
17
|
-
if File.file?(bundle_binstub)
|
18
|
-
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
-
load(bundle_binstub)
|
20
|
-
else
|
21
|
-
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
-
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
require "rubygems"
|
27
|
-
require "bundler/setup"
|
28
|
-
|
29
|
-
load Gem.bin_path("strong_versions", "strong_versions")
|