docker_compose_env_rails 0.1.2 → 1.0.0

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.
@@ -1,40 +1,50 @@
1
1
  require 'docker_compose_env/version'
2
+ require 'open3'
2
3
  require 'yaml'
3
4
 
4
5
  # The main module for DockerComposeEnv, this provides a single "easy mode"
5
6
  # method for setting up the environment.
6
7
  module DockerComposeEnv
7
- def self.setup!(env: ENV, file: 'docker-compose.yml')
8
+ def self.setup!(env: ENV, file: 'docker-compose.yml', process_env: {})
8
9
  config = YAML.safe_load(File.read(file))
9
10
 
10
11
  config.fetch('services', {}).keys.each do |service_name|
11
12
  (config['services'][service_name]['ports'] || []).each do |container_port|
13
+ compose_port_info = nil
14
+
12
15
  if /(\d+)\/udp$/ =~ container_port
13
16
  parsed_port = /(?<port>\d+)\/udp$/.match(container_port).named_captures['port']
14
17
 
15
18
  command = "docker-compose --file=#{file} port --protocol=udp #{service_name} #{parsed_port}"
16
- compose_port_info = `#{command}`
19
+ Open3.popen3(process_env, command) do |stdin, stdout, stderr, wait_thr|
20
+ compose_port_info = stdout.read
21
+ wait_thr.value
22
+ end
17
23
 
18
- if (compose_port_info =~ /^0\.0\.0\.0\:\d+\s*$/) == 0
24
+ if (compose_port_info =~ /^(0\.0\.0\.0\:)?\d+\s*$/) == 0
19
25
  if env["#{service_name.upcase}_HOST"].nil?
20
26
  env["#{service_name.upcase}_HOST"] = '0.0.0.0'
21
27
  end
22
28
 
23
29
  if env["#{service_name.upcase}_PORT_#{parsed_port}_UDP"].nil?
24
- env["#{service_name.upcase}_PORT_#{parsed_port}_UDP"] = compose_port_info.gsub(/0\.0\.0\.0:(\d+)\s*/, '\1')
30
+ env["#{service_name.upcase}_PORT_#{parsed_port}_UDP"] = compose_port_info.gsub('0.0.0.0:', '').gsub(/(\d+)\s*/, '\1')
25
31
  end
26
32
  end
27
33
  else
28
34
  command = "docker-compose --file=#{file} port #{service_name} #{container_port}"
29
- compose_port_info = `#{command}`
35
+ Open3.popen3(process_env, command) do |stdin, stdout, stderr, wait_thr|
36
+ compose_port_info = stdout.read
37
+ wait_thr.value
38
+ end
30
39
 
31
- if (compose_port_info =~ /^0\.0\.0\.0\:\d+\s*$/) == 0
40
+ # podman-compose appears to return as "44577\n" w/out 0.0.0.0:44577
41
+ if (compose_port_info =~ /^(0\.0\.0\.0\:)?\d+\s*$/) == 0
32
42
  if env["#{service_name.upcase}_HOST"].nil?
33
43
  env["#{service_name.upcase}_HOST"] = '0.0.0.0'
34
44
  end
35
45
 
36
46
  if env["#{service_name.upcase}_PORT_#{container_port}"].nil?
37
- env["#{service_name.upcase}_PORT_#{container_port}"] = compose_port_info.gsub(/0\.0\.0\.0:(\d+)\s*/, '\1')
47
+ env["#{service_name.upcase}_PORT_#{container_port}"] = compose_port_info.gsub('0.0.0.0', '').gsub(/(\d+)\s*/, '\1')
38
48
  end
39
49
  end
40
50
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker_compose_env_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Knapp
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: docker_compose_env
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - '='
18
17
  - !ruby/object:Gem::Version
19
- version: 0.1.2
18
+ version: 1.0.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - '='
25
24
  - !ruby/object:Gem::Version
26
- version: 0.1.2
25
+ version: 1.0.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: railties
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '3.2'
32
+ version: '0'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '3.2'
39
+ version: '0'
41
40
  description: Automate docker_compose_env in Rails.
42
41
  email:
43
42
  - jon@coffeeandcode.com
@@ -45,12 +44,14 @@ executables: []
45
44
  extensions: []
46
45
  extra_rdoc_files: []
47
46
  files:
47
+ - ".envrc"
48
48
  - ".gitignore"
49
49
  - ".rubocop.yml"
50
50
  - ".tool-versions"
51
51
  - ".travis.yml"
52
52
  - CHANGELOG.md
53
53
  - Gemfile
54
+ - Gemfile.lock
54
55
  - LICENSE
55
56
  - README.md
56
57
  - Rakefile
@@ -60,6 +61,9 @@ files:
60
61
  - docker_compose_env.gemspec
61
62
  - docker_compose_env_rails.gemspec
62
63
  - docs/why.md
64
+ - flake.lock
65
+ - flake.nix
66
+ - gemset.nix
63
67
  - lib/docker_compose_env.rb
64
68
  - lib/docker_compose_env/now.rb
65
69
  - lib/docker_compose_env/railtie.rb
@@ -69,7 +73,6 @@ homepage: https://github.com/CoffeeAndCode/docker_compose_env
69
73
  licenses:
70
74
  - MIT
71
75
  metadata: {}
72
- post_install_message:
73
76
  rdoc_options: []
74
77
  require_paths:
75
78
  - lib
@@ -84,8 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
87
  - !ruby/object:Gem::Version
85
88
  version: '0'
86
89
  requirements: []
87
- rubygems_version: 3.0.6
88
- signing_key:
90
+ rubygems_version: 3.6.9
89
91
  specification_version: 4
90
92
  summary: Automate docker_compose_env in Rails.
91
93
  test_files: []