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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3ef93d88b5d6c2c60bf1c558ec2f04c3563194bae32a5374b53b8a2dd53a73f
4
- data.tar.gz: 1488c9004ca7857e59e4dafd5f2276d4c0dd2ad70776ad57f6250dc633895e99
3
+ metadata.gz: de4a4ad1a3d892e6177e6a4397ed5daafbc2ea14d2183600a39103624b40f5c6
4
+ data.tar.gz: 38c8b982edd2468d9fc034eedaf841b7074d5775483aa5d5761ee58eef646ac7
5
5
  SHA512:
6
- metadata.gz: 93470c6903f7aaa33b3e684712884733b9112080e7b94bd8461feff6c9fe15c9a647710be340fcd4071a143c9d4a31e2dd2c2bd47de31333b8e93bd121072818
7
- data.tar.gz: 024df80165322260d9a9df620eedc4b69fe9e4d844b35f5a21b5ce5a7658f380ac85fd37aec169ed2c50f59917dc89a18a75f661062b8cdb12833b29c5c6eb80
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.1'
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
- See [build environment](#build-environment) for more details.
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
- CONTAINER_PORT=3000
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
 
@@ -11,7 +11,7 @@ require 'paint'
11
11
  begin
12
12
  require 'rails'
13
13
  rescue LoadError
14
- warn('[orchestration] Rails not detected; skipping.')
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'
@@ -113,7 +113,7 @@ module Orchestration
113
113
  end
114
114
 
115
115
  def ports
116
- ['${CONTAINER_PORT:?CONTAINER_PORT must be provided}:8080']
116
+ ['${PUBLISH_PORT:?PUBLISH_PORT must be provided}:8080']
117
117
  end
118
118
  end
119
119
  end
@@ -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
- class DockerHealthcheck
6
- def self.execute
7
- new.execute
8
- end
9
-
10
- def execute
11
- return_code = 1
10
+ def execute
11
+ return_code = 1
12
12
 
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
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
- private
26
+ private
27
27
 
28
- def request
29
- client = Net::HTTP.new(
30
- ENV.fetch('WEB_HOST', 'localhost'),
31
- ENV.fetch('WEB_PORT', '8080').to_i
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
- 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
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
- client.start do |request|
38
- request.get(ENV.fetch('WEB_HEALTHCHECK_PATH') { '/' })
37
+ client.start do |request|
38
+ request.get(ENV.fetch('WEB_HEALTHCHECK_PATH') { '/' })
39
+ end
39
40
  end
40
- end
41
41
 
42
- def success_codes
43
- ENV.fetch('WEB_HEALTHCHECK_SUCCESS_CODES', '200,202,204').split(',')
44
- end
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
- 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'
46
+ def success?(code)
47
+ success_codes.include?(code.to_s)
57
48
  end
58
49
 
59
- accepted = success_codes.join(', ')
60
- message = "#{in_or_not} [#{accepted}] : #{outcome} [#{__FILE__}]"
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
- "# HTTP_STATUS(#{code}) #{message}"
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
@@ -82,7 +82,7 @@ module Orchestration
82
82
  end
83
83
 
84
84
  def app_port
85
- ENV.fetch('CONTAINER_PORT', ENV.fetch('WEB_PORT', '3000')).to_i
85
+ ENV.fetch('PUBLISH_PORT', ENV.fetch('WEB_PORT', '3000')).to_i
86
86
  end
87
87
 
88
88
  def app_name
@@ -16,7 +16,7 @@ module Orchestration
16
16
  end
17
17
 
18
18
  def run
19
- return echo_missing unless @service.configuration.configured?
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 && yarn install
23
+ RUN . /root/.bashrc ; yarn install
24
24
  <% end %>
25
25
  ADD .build/context.tar .
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 %>
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: start
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
@@ -8,8 +8,8 @@ else ifneq (,$(RACK_ENV))
8
8
  endif
9
9
 
10
10
  verify-environment:
11
- ifndef CONTAINER_PORT
12
- @$(error `CONTAINER_PORT` must be defined in environment)
11
+ ifndef PUBLISH_PORT
12
+ @$(error `PUBLISH_PORT` must be defined in environment)
13
13
  endif
14
14
 
15
15
  ifndef env
@@ -1,7 +1,4 @@
1
- # Configure which port your `app` service will listen on:
2
- CONTAINER_PORT=3000
3
-
4
- # Use `make deploy` to deploy your application stack to a Docker Swarm.
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=sed 's/\(^${key_chars}*$(1)${key_chars}*\)=\(.*\)$$/\1=${censored}/'
91
- censor_urls:=sed 's|\([a-zA-Z0-9_+]\+://.*:\).*\(@.*\)$$|\1${censored}\2|'
92
- format_env:=$(call censor,SECRET) | \
93
- $(call censor,PASSWORD) | \
94
- $(call censor,TOKEN) | \
95
- $(call censor,PRIVATE) | \
96
- $(call censor,KEY) | \
97
- ${censor_urls} | \
98
- sed 's/\(^[a-zA-Z0-9_]\+\)=/${blue}\1${reset}=/' | \
99
- sed 's/^/ /' | \
100
- sed 's/=\(.*\)$$/=${yellow}\1${reset}/'
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
- docker_config:=$(shell ${rake} orchestration:config)
42
- docker_organization=$(word 1,$(docker_config))
43
- docker_repository=$(word 2,$(docker_config))
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 HOST_UID=$(shell id -u) \
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 println,'') \
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 println,'') \
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: context = ${orchestration_dir}/.build/context.tar
320
- build: check-local-changes
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orchestration
4
- VERSION = '0.5.1'
4
+ VERSION = '0.5.6'
5
5
  end
@@ -23,7 +23,7 @@ namespace :orchestration do
23
23
 
24
24
  desc I18n.t('orchestration.rake.healthcheck')
25
25
  task :healthcheck do
26
- Orchestration::Healthcheck.execute
26
+ Orchestration::DockerHealthcheck.execute
27
27
  end
28
28
 
29
29
  desc I18n.t('orchestration.rake.wait')
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.1
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-02-28 00:00:00.000000000 Z
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")
@@ -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")
@@ -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")