orchestration 0.6.3 → 0.6.4

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: ca5c9bd9b0a391d077e39e8447c38483f7149c3435b150289d2bebee4ca951b9
4
- data.tar.gz: '08d6fdbd61e22b9ab3b5f3367250c7adfa0ad65dfecccc128a1075db8e6a478c'
3
+ metadata.gz: 99bdeb106830843d2a0e600151a4d80b411d21e86f25010d6c2379810ef85273
4
+ data.tar.gz: 4b3828ec78541d1680d3e5749c0a2e428bed328313d17e13d3f4e0dc1bdb0e8b
5
5
  SHA512:
6
- metadata.gz: f07f4b6ad5d5ce98cf65f94ccc9ae6ae280fab784a1760ede004a0cecdc4c90294e781d585868da9784603fca08f7e530b87ad94bf886e9c6f4c78e48264e7f3
7
- data.tar.gz: 2cf4176c26c23d05733a926a8d22871a0e801a35d7e4b5643e92d7adfdb6a7627b23ee37dd97c01250937ebb31a7c9d638a5902377b91d512a48bcf90e5a0d90
6
+ metadata.gz: 0e5a03e78c1e442daa079a5d92540df52a148b7ea08b8fa3ecd55919d045e7fc239d5638d8a850565044b9c1d7065b39c4401a72db0daef0d299c622e86ee02f
7
+ data.tar.gz: e2061ef7628599f65c05d28380376ef841a329f85408c2dfa84172907ada7392dc0ba556b01a6559f3869b1f7b6809304615ebe91a9970e71adc31d04a0e82ed
data/README.md CHANGED
@@ -29,7 +29,7 @@ The below screenshot demonstrates _Orchestration_ being installed in a brand new
29
29
  Add _Orchestration_ to your Gemfile:
30
30
 
31
31
  ```ruby
32
- gem 'orchestration', '~> 0.6.3'
32
+ gem 'orchestration', '~> 0.6.4'
33
33
  ```
34
34
 
35
35
  Install:
@@ -29,6 +29,7 @@ en:
29
29
  rake:
30
30
  config: "Parse and output Orchestration config (internal use)"
31
31
  healthcheck: "Execute healthcheck; used for HEALTHCHECK command in Docker image"
32
+ compose_services: "Output configured services for a given environment (RAILS_ENV)"
32
33
  install: "Install Orchestration tools"
33
34
  install_makefile: "(Re)create orchestration/Makefile"
34
35
  wait: "Wait for development/test dependencies to be available"
@@ -98,10 +98,10 @@ module Orchestration
98
98
  'RAILS_LOG_TO_STDOUT' => '1',
99
99
  'RAILS_SERVE_STATIC_FILES' => '1',
100
100
  'WEB_PRELOAD_APP' => '1',
101
- 'WEB_HEALTHCHECK_PATH' => '/',
101
+ 'WEB_HEALTHCHECK_PATH' => '/healthcheck',
102
102
  'WEB_PORT' => 8080,
103
103
  'DATABASE_URL' => database_url
104
- }.merge(inherited_environment.map { |key| [key, nil] }.to_h).merge(rabbitmq_urls)
104
+ }.merge(inherited_environment.to_h { |key| [key, nil] }).merge(rabbitmq_urls)
105
105
  end
106
106
 
107
107
  def rabbitmq_urls
@@ -115,7 +115,7 @@ module Orchestration
115
115
  'postgresql' => 'postgresql://postgres:password@database-local:5432/production',
116
116
  'mysql2' => 'mysql2://root:password@database-local:3306/production',
117
117
  'sqlite3' => 'sqlite3:db/production.sqlite3'
118
- }.fetch(DockerCompose::ComposeConfiguration.database_adapter_name)
118
+ }.fetch(DockerCompose::ComposeConfiguration.database_adapter_name, nil)
119
119
  end
120
120
 
121
121
  def inherited_environment
@@ -48,6 +48,8 @@ module Orchestration
48
48
 
49
49
  def config
50
50
  @config ||= @env.docker_compose_config
51
+ rescue Errno::ENOENT
52
+ {}
51
53
  end
52
54
 
53
55
  def listener?(name)
@@ -69,12 +69,12 @@ module Orchestration
69
69
  end
70
70
 
71
71
  def default_app_name
72
- default = docker_filter(root.basename.to_s)
72
+ default = docker_filter(root.basename.to_s, underscore: true)
73
73
  return default unless defined?(Rails)
74
74
  # Edge case if Rails is used as a dependency but we are not a Rails app:
75
75
  return default if rails_application == Object
76
76
 
77
- docker_filter(rails_application.name.underscore)
77
+ docker_filter(rails_application.name.underscore, underscore: true)
78
78
  end
79
79
 
80
80
  def rabbitmq_url
@@ -126,10 +126,14 @@ module Orchestration
126
126
  app_class.parent
127
127
  end
128
128
 
129
- def docker_filter(string)
129
+ def docker_filter(string, underscore: false)
130
130
  # Filter out characters not accepted by Docker Hub
131
131
  permitted = [('0'..'9'), ('a'..'z')].map(&:to_a).flatten
132
- string.chars.select { |char| permitted.include?(char) }.join
132
+ string.chars.select do |char|
133
+ next true if underscore && char == '_'
134
+
135
+ permitted.include?(char)
136
+ end.join
133
137
  end
134
138
  end
135
139
  end
@@ -141,6 +141,8 @@ docker_config:=$(shell DEVPACK_DISABLE=1 RAILS_ENV=development ${bundle_cmd} rak
141
141
  docker_organization=$(word 1,$(docker_config))
142
142
  docker_repository=$(word 2,$(docker_config))
143
143
 
144
+ compose_services:=$(shell ${rake} orchestration:compose_services RAILS_ENV=${env})
145
+
144
146
  ifeq (,$(project_name))
145
147
  project_base = ${docker_repository}_${env}
146
148
  else
@@ -209,9 +211,10 @@ ifndef network
209
211
  start: network := ${compose_project_name}
210
212
  endif
211
213
  start: _create-log-directory _clean-logs
214
+ ifneq (,${compose_services})
212
215
  @$(call system,${compose_human} up --detach)
213
216
  ifeq (${env},$(filter ${env},test development))
214
- @${compose} up --detach --force-recreate --renew-anon-volumes --remove-orphans ${services} ${log} || ${exit_fail}
217
+ ${compose} up --detach --force-recreate --renew-anon-volumes --remove-orphans ${services} ${log} || ${exit_fail}
215
218
  @[ -n '${sidecar}' ] && \
216
219
  ( \
217
220
  $(call echo,(joining dependency network ${cyan}${network}${reset})) ; \
@@ -229,10 +232,12 @@ endif
229
232
  @$(call echo,${env_human} containers started ${tick})
230
233
  @$(call echo,Waiting for services to become available)
231
234
  @$(call make,wait) 2>${stderr} || ${exit_fail}
235
+ endif
232
236
 
233
237
  .PHONY: stop
234
238
  stop: network := ${compose_project_name}
235
239
  stop:
240
+ ifneq (,${compose_services})
236
241
  @$(call echo,Stopping ${env_human} containers)
237
242
  @$(call system,${compose_human} down)
238
243
  @if docker ps --format "{{.ID}}" | grep -q $(shell hostname) ; \
@@ -244,6 +249,7 @@ stop:
244
249
  ${compose} down ${log} || ${exit_fail} ; \
245
250
  fi
246
251
  @$(call echo,${env_human} containers stopped ${tick})
252
+ endif
247
253
 
248
254
  .PHONY: logs
249
255
  logs:
@@ -288,7 +294,9 @@ db-console:
288
294
  @${rake} orchestration:db:console RAILS_ENV=${env}
289
295
 
290
296
  .PHONY: setup
297
+ ifneq (,$(wildcard config/database.yml))
291
298
  setup: url = $(shell ${rake} orchestration:db:url RAILS_ENV=${env})
299
+ endif
292
300
  setup: _log-notify
293
301
  @$(call echo,Setting up ${env_human} environment)
294
302
  @$(call make,start env=${env})
@@ -306,9 +314,9 @@ ifneq (,$(wildcard config/database.yml))
306
314
  @$(call system,rake db:migrate DATABASE_URL="${url}")
307
315
  @${rake} db:migrate RAILS_ENV=${env}
308
316
  endif
309
- @$(MAKE) -n post-setup >/dev/null 2>&1 \
310
- && $(call system,make post-setup RAILS_ENV=${env}) \
311
- && $(MAKE) post-setup RAILS_ENV=${env}
317
+ @if $(MAKE) -n post-setup >/dev/null 2>&1; then \
318
+ $(call system,make post-setup RAILS_ENV=${env}) \
319
+ && $(MAKE) post-setup RAILS_ENV=${env}; fi
312
320
  @$(call echo,${env_human} environment setup complete ${tick})
313
321
 
314
322
  .PHONY: dump
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orchestration
4
- VERSION = '0.6.3'
4
+ VERSION = '0.6.4'
5
5
  end
@@ -39,6 +39,12 @@ namespace :orchestration do
39
39
  end
40
40
  end
41
41
 
42
+ desc I18n.t('orchestration.rake.compose_services')
43
+ task :compose_services do
44
+ config = Orchestration::DockerCompose::ComposeConfiguration.new(Orchestration::Environment.new)
45
+ puts config.services.keys.join(' ') unless config.services.nil? || config.services.empty?
46
+ end
47
+
42
48
  desc I18n.t('orchestration.rake.healthcheck')
43
49
  task :healthcheck do
44
50
  Orchestration::DockerHealthcheck.execute
@@ -14,6 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.summary = 'Docker orchestration toolkit'
15
15
  spec.description = 'Tools to help launch apps in Docker'
16
16
  spec.homepage = url
17
+ spec.metadata['rubygems_mfa_required'] = 'true'
17
18
 
18
19
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
20
  `git ls-files -z`.split("\x0").reject do |f|
@@ -21,7 +22,7 @@ Gem::Specification.new do |spec|
21
22
  end
22
23
  end
23
24
 
24
- spec.required_ruby_version = '~> 2.6'
25
+ spec.required_ruby_version = '~> 2.7'
25
26
  spec.bindir = 'bin'
26
27
  spec.executables = []
27
28
  spec.require_paths = ['lib']
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.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-23 00:00:00.000000000 Z
11
+ date: 2021-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: database_url
@@ -414,7 +414,8 @@ files:
414
414
  - orchestration.gemspec
415
415
  homepage: https://github.com/bobf/orchestration
416
416
  licenses: []
417
- metadata: {}
417
+ metadata:
418
+ rubygems_mfa_required: 'true'
418
419
  post_install_message:
419
420
  rdoc_options: []
420
421
  require_paths:
@@ -423,14 +424,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
423
424
  requirements:
424
425
  - - "~>"
425
426
  - !ruby/object:Gem::Version
426
- version: '2.6'
427
+ version: '2.7'
427
428
  required_rubygems_version: !ruby/object:Gem::Requirement
428
429
  requirements:
429
430
  - - ">="
430
431
  - !ruby/object:Gem::Version
431
432
  version: '0'
432
433
  requirements: []
433
- rubygems_version: 3.0.3
434
+ rubygems_version: 3.1.6
434
435
  signing_key:
435
436
  specification_version: 4
436
437
  summary: Docker orchestration toolkit