orchestration 0.7.3 → 0.7.5

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: fd668d1ea77820075d2ad454dde1691304daed2c1e26d7e446e2e729a62625db
4
- data.tar.gz: 0d3e1d8796810142973303a530972b9bb38e165822c7b403c52ddfb439d91947
3
+ metadata.gz: 15cc577b20dab6949e4af0dbddccd6d120f66762602dd30cd8c4e34928ebff80
4
+ data.tar.gz: 909b1dee4b04df4be8f31dee5c2b7946f3cb652ca28093e33d5e7d4a8fb7a8ce
5
5
  SHA512:
6
- metadata.gz: d308e88beaaf4c792c2aea6c7ac3ea78c5249ac956da2f1a8ae0637432321a1118a02d9ccef59ae6abf51ac0f381e4bf7e7be249721d1bd2138a51e4fda63f4a
7
- data.tar.gz: 322620f4c68eb845f63006531355d93193df31757dae2ca97b6bc5d45186262557da6a4f9381fd8dfa6754e619cb370d0b5d93aa6e155f053fb3265e2639ab06
6
+ metadata.gz: ac93a79951078f867958e22d82f752ead2539a0406b2cc5509362d87c05cbfd6bf0f32aa5eb262853f240a8b632f4738e074757f81d50cf463a879a755753d19
7
+ data.tar.gz: 2d14f57dd29b45861c4c2abda51b12182ce7ed91c53325d217c6e56078836f09cdde2635f743986383fd238e26a959c725f679011dfa9270ba91659c6a345930
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- orchestration (0.7.2)
4
+ orchestration (0.7.4)
5
5
  database_url (~> 0.1.2)
6
+ dotenv-rails (~> 2.8)
6
7
  erubis (~> 2.7)
7
8
  i18n
8
9
  paint (~> 2.2)
@@ -65,6 +66,9 @@ GEM
65
66
  activerecord (7.0.3)
66
67
  activemodel (= 7.0.3)
67
68
  activesupport (= 7.0.3)
69
+ activerecord-postgis-adapter (8.0.1)
70
+ activerecord (~> 7.0.0)
71
+ rgeo-activerecord (~> 7.0.0)
68
72
  activestorage (7.0.3)
69
73
  actionpack (= 7.0.3)
70
74
  activejob (= 7.0.3)
@@ -94,6 +98,10 @@ GEM
94
98
  devpack (0.4.0)
95
99
  diff-lcs (1.5.0)
96
100
  digest (3.1.0)
101
+ dotenv (2.8.1)
102
+ dotenv-rails (2.8.1)
103
+ dotenv (= 2.8.1)
104
+ railties (>= 3.2)
97
105
  erubi (1.10.0)
98
106
  erubis (2.7.0)
99
107
  globalid (1.0.0)
@@ -109,6 +117,7 @@ GEM
109
117
  marcel (1.0.2)
110
118
  method_source (1.0.0)
111
119
  mini_mime (1.1.2)
120
+ mini_portile2 (2.8.0)
112
121
  minitest (5.15.0)
113
122
  mongo (2.17.1)
114
123
  bson (>= 4.8.2, < 5.0.0)
@@ -132,6 +141,9 @@ GEM
132
141
  net-protocol
133
142
  timeout
134
143
  nio4r (2.5.8)
144
+ nokogiri (1.13.6)
145
+ mini_portile2 (~> 2.8.0)
146
+ racc (~> 1.4)
135
147
  nokogiri (1.13.6-x86_64-linux)
136
148
  racc (~> 1.4)
137
149
  paint (2.2.1)
@@ -176,6 +188,10 @@ GEM
176
188
  redis (4.6.0)
177
189
  regexp_parser (2.4.0)
178
190
  rexml (3.2.5)
191
+ rgeo (2.4.0)
192
+ rgeo-activerecord (7.0.1)
193
+ activerecord (>= 5.0)
194
+ rgeo (>= 1.0.0)
179
195
  rspec (3.11.0)
180
196
  rspec-core (~> 3.11.0)
181
197
  rspec-expectations (~> 3.11.0)
@@ -237,10 +253,12 @@ GEM
237
253
  zeitwerk (2.5.4)
238
254
 
239
255
  PLATFORMS
256
+ ruby
240
257
  x86_64-linux
241
258
 
242
259
  DEPENDENCIES
243
260
  activerecord (>= 6.0)
261
+ activerecord-postgis-adapter (~> 8.0)
244
262
  bunny (~> 2.19)
245
263
  devpack (~> 0.4.0)
246
264
  mongoid (~> 7.4)
data/README.md CHANGED
@@ -166,30 +166,15 @@ make push
166
166
 
167
167
  ### Development
168
168
 
169
- An [`.env` file](https://docs.docker.com/compose/env-file/) is created automatically in your project root. This file is _not_ stored in version control. Set all application environment variables in this file.
169
+ A [`.env` file](https://docs.docker.com/compose/env-file/) is created automatically in your project root. This file is _not_ stored in version control. Set all application environment variables in this file.
170
170
 
171
171
  #### Launching a development server
172
172
 
173
- To load all variables from `.env` and launch a development server, run the following command:
173
+ Use vanilla _Rails_ commands to load a server or console. If present, a `.env` file will be read and loaded (via the [dotenv](https://github.com/bkeepers/dotenv) gem) to populate the environment.
174
174
 
175
175
  ```bash
176
- make serve
177
- ```
178
-
179
- To load a _Rails_ console:
180
- ```bash
181
- make console
182
- ```
183
-
184
- The application environment will be output on launch for convenience.
185
-
186
- To pass extra commands to the _Rails_ server:
187
- ```bash
188
- # Custom server, custom port
189
- make serve server='webrick -p 3001'
190
-
191
- # Default server, custom port, custom bind address
192
- make serve server='-p 3001 -b 192.168.0.1'
176
+ bundle exec rails s # Launch a server
177
+ bundle exec rails c # Launch a console
193
178
  ```
194
179
 
195
180
  ### Testing
@@ -118,6 +118,7 @@ module Orchestration
118
118
  def database_url
119
119
  {
120
120
  'postgresql' => 'postgresql://postgres:password@database-local:5432/production',
121
+ 'postgis' => 'postgis://postgres:password@database-local:5432/production',
121
122
  'mysql2' => 'mysql2://root:password@database-local:3306/production',
122
123
  'sqlite3' => 'sqlite3:db/production.sqlite3'
123
124
  }.fetch(DockerCompose::ComposeConfiguration.database_adapter_name, nil)
@@ -5,6 +5,7 @@ module Orchestration
5
5
  class ComposeConfiguration
6
6
  def self.database_adapter_name
7
7
  return nil unless defined?(ActiveRecord)
8
+ return 'postgis' if defined?(::POSTGIS)
8
9
  return 'postgresql' if defined?(::PG)
9
10
  return 'mysql2' if defined?(::Mysql2)
10
11
  return 'sqlite3' if defined?(::SQLite3)
@@ -28,6 +29,7 @@ module Orchestration
28
29
  return nil unless defined?(ActiveRecord)
29
30
 
30
31
  base = Orchestration::Services::Database::Adapters
32
+ return base::Postgis.new if defined?(::PostGIS)
31
33
  return base::Postgresql.new if defined?(::PG)
32
34
  return base::Mysql2.new if defined?(::Mysql2)
33
35
  return base::Sqlite3.new if defined?(::SQLite3)
@@ -2,7 +2,8 @@
2
2
  ### Environment setup ###
3
3
  SHELL:=/bin/bash
4
4
  MAKE:=mkpath=${mkpath} make --no-print-directory
5
-
5
+ ORCHESTRATION_DISABLE_ENV=1
6
+ export
6
7
  TERM ?= 'dumb'
7
8
  pwd:=$(shell pwd)
8
9
 
@@ -142,7 +143,7 @@ DOCKER_TAG ?= latest
142
143
  ifneq (,$(wildcard ./Gemfile))
143
144
  bundle_cmd = bundle exec
144
145
  endif
145
- rake=DEVPACK_DISABLE=1 RACK_ENV=${env} SECRET_KEY_BASE='placeholder-secret' RAILS_ENV=${env} ${bundle_cmd} rake
146
+ rake=ORCHESTRATION_DISABLE_ENV=1 DEVPACK_DISABLE=1 RACK_ENV=${env} SECRET_KEY_BASE='placeholder-secret' RAILS_ENV=${env} ${bundle_cmd} rake
146
147
 
147
148
  ifneq (,$(wildcard ${env_file}))
148
149
  ifeq (,$(findstring deploy,$(MAKECMDGOALS)))
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ ENV['ORCHESTRATION_DISABLE_ENV'] = '1'
4
+
3
5
  require 'orchestration'
4
6
  puts Orchestration.makefile
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Orchestration
4
+ module Services
5
+ module Database
6
+ module Adapters
7
+ class Postgis
8
+ include AdapterBase
9
+
10
+ def name
11
+ 'postgis'
12
+ end
13
+
14
+ def image
15
+ 'postgis/postgis:15-3.3'
16
+ end
17
+
18
+ def credentials
19
+ {
20
+ 'username' => 'postgres',
21
+ 'password' => 'password',
22
+ 'database' => 'postgres'
23
+ }
24
+ end
25
+
26
+ def errors
27
+ [PG::ConnectionBad]
28
+ end
29
+
30
+ def default_port
31
+ 5432
32
+ end
33
+
34
+ def environment
35
+ {
36
+ 'POSTGRES_PASSWORD' => 'password',
37
+ 'PGDATA' => data_dir
38
+ }
39
+ end
40
+
41
+ def data_dir
42
+ '/var/pgdata'
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -12,4 +12,5 @@ end
12
12
  require 'orchestration/services/database/adapters/adapter_base'
13
13
  require 'orchestration/services/database/adapters/mysql2'
14
14
  require 'orchestration/services/database/adapters/postgresql'
15
+ require 'orchestration/services/database/adapters/postgis'
15
16
  require 'orchestration/services/database/adapters/sqlite3'
@@ -118,6 +118,7 @@ module Orchestration
118
118
  'mysql2' => adapters::Mysql2,
119
119
  'mysql' => adapters::Mysql2,
120
120
  'postgresql' => adapters::Postgresql,
121
+ 'postgis' => adapters::Postgis,
121
122
  'sqlite3' => adapters::Sqlite3
122
123
  }.fetch(name).new(self)
123
124
  rescue KeyError
@@ -47,6 +47,10 @@ module Orchestration
47
47
  @settings.set(setting, read(prompt, default))
48
48
  end
49
49
 
50
+ def print_variable(variable, value)
51
+ $stderr.print "#{Paint[variable, :blue]}#{Paint['=', :white]}#{Paint[value, :cyan]}"
52
+ end
53
+
50
54
  private
51
55
 
52
56
  def prompt(message, default)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orchestration
4
- VERSION = '0.7.3'
4
+ VERSION = '0.7.5'
5
5
  end
data/lib/orchestration.rb CHANGED
@@ -33,28 +33,67 @@ require 'orchestration/terminal'
33
33
  require 'orchestration/version'
34
34
 
35
35
  module Orchestration
36
- def self.root
37
- Pathname.new(File.dirname(__dir__))
38
- end
36
+ class << self
37
+ def root
38
+ Pathname.new(File.dirname(__dir__))
39
+ end
39
40
 
40
- def self.makefile
41
- root.join('lib', 'orchestration', 'make', 'orchestration.mk')
42
- end
41
+ def makefile
42
+ root.join('lib', 'orchestration', 'make', 'orchestration.mk')
43
+ end
43
44
 
44
- def self.rakefile
45
- root.join('lib', 'Rakefile')
46
- end
45
+ def rakefile
46
+ root.join('lib', 'Rakefile')
47
+ end
47
48
 
48
- def self.error(key, options = {})
49
- warn('# Orchestration Error')
50
- warn("# #{I18n.t("orchestration.#{key}", options)}")
51
- end
49
+ def error(key, options = {})
50
+ warn('# Orchestration Error')
51
+ warn("# #{I18n.t("orchestration.#{key}", options)}")
52
+ end
53
+
54
+ def random_local_port
55
+ socket = Socket.new(:INET, :STREAM, 0)
56
+ socket.bind(Addrinfo.tcp('127.0.0.1', 0))
57
+ port = socket.local_address.ip_port
58
+ socket.close
59
+ port
60
+ end
61
+
62
+ def print_environment
63
+ return unless File.exist?('.env')
52
64
 
53
- def self.random_local_port
54
- socket = Socket.new(:INET, :STREAM, 0)
55
- socket.bind(Addrinfo.tcp('127.0.0.1', 0))
56
- port = socket.local_address.ip_port
57
- socket.close
58
- port
65
+ $stderr.puts
66
+ warn("#{prefix} #{Paint['Loading environment from', :cyan]} #{Paint['.env', :green]}")
67
+ $stderr.puts
68
+ environment_variables.each do |variable, value|
69
+ terminal.print_variable(variable, value)
70
+ end
71
+ $stderr.puts
72
+ end
73
+
74
+ private
75
+
76
+ def terminal
77
+ @terminal ||= Terminal.new(Environment.new.settings)
78
+ end
79
+
80
+ def prefix
81
+ "#{Paint['[', :white]}#{Paint['orchestration', :cyan]}#{Paint[']', :white]}"
82
+ end
83
+
84
+ def environment_variables
85
+ File.readlines('.env').reject { |line| line.match(/^\s*#/) }
86
+ .select { |line| line.include?('=') }
87
+ .map do |line|
88
+ variable, _, value = line.partition('=')
89
+ [variable, value]
90
+ end
91
+ end
59
92
  end
60
93
  end
94
+
95
+ if ENV['RAILS_ENV'] == 'development' && !ENV.key?('ORCHESTRATION_DISABLE_ENV')
96
+ require 'dotenv-rails'
97
+ Dotenv::Railtie.load
98
+ Orchestration.print_environment
99
+ end
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ['lib']
29
29
 
30
30
  spec.add_runtime_dependency 'database_url', '~> 0.1.2'
31
+ spec.add_runtime_dependency 'dotenv-rails', '~> 2.8'
31
32
  spec.add_runtime_dependency 'erubis', '~> 2.7'
32
33
  spec.add_runtime_dependency 'i18n'
33
34
  spec.add_runtime_dependency 'paint', '~> 2.2'
@@ -35,6 +36,7 @@ Gem::Specification.new do |spec|
35
36
  spec.add_runtime_dependency 'thor', '~> 1.2'
36
37
 
37
38
  spec.add_development_dependency 'activerecord', '>= 6.0'
39
+ spec.add_development_dependency 'activerecord-postgis-adapter', '~> 8.0'
38
40
  spec.add_development_dependency 'bunny', '~> 2.19'
39
41
  spec.add_development_dependency 'devpack', '~> 0.4.0'
40
42
  spec.add_development_dependency 'mongoid', '~> 7.4'
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.7.3
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-17 00:00:00.000000000 Z
11
+ date: 2023-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: database_url
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: dotenv-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.8'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: erubis
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '6.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: activerecord-postgis-adapter
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '8.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '8.0'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: bunny
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -399,6 +427,7 @@ files:
399
427
  - lib/orchestration/services/database/adapters.rb
400
428
  - lib/orchestration/services/database/adapters/adapter_base.rb
401
429
  - lib/orchestration/services/database/adapters/mysql2.rb
430
+ - lib/orchestration/services/database/adapters/postgis.rb
402
431
  - lib/orchestration/services/database/adapters/postgresql.rb
403
432
  - lib/orchestration/services/database/adapters/sqlite3.rb
404
433
  - lib/orchestration/services/database/configuration.rb