orchestration 0.5.1 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
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")