biran 0.1.6 → 0.1.7
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 +5 -5
- data/README.md +25 -3
- data/lib/biran/config.rb +5 -1
- data/lib/biran/config_defaults.rb +10 -1
- data/lib/biran/configurinator.rb +11 -17
- data/lib/biran/configurinator.rb.debug +145 -0
- data/lib/biran/erb_config.rb +6 -5
- data/lib/biran/version.rb +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a67e7f787cbdfa09727e1214e5668cfc20ca239a6765c538b46884f70436cb10
|
4
|
+
data.tar.gz: c48aaf4d46a5a7a1130a14191113ed9db8ec9e8cbac2d71b6e1f74548fd5db32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c878c531325e65bf3d0ec59b7d5b9b2f41921165d4390839c24c5aa78b94b654ab9af45934e0d3242a5031bc19ba7a9afc7e3be294acb14b141e69c438a01c8a
|
7
|
+
data.tar.gz: 185b07e2b09bd9fd2d0f666b814a9bb6ba8f5bd0c1e8943031d98cd8bb1fae588d12e59edcba4879df95c120e62a0f208153370621b54e2c0a11c07698ef5f2c
|
data/README.md
CHANGED
@@ -102,6 +102,7 @@ the list of things you can configure are:
|
|
102
102
|
:bindings,
|
103
103
|
:app_setup_blocks,
|
104
104
|
:files_to_generate
|
105
|
+
:vhost_public_dirname
|
105
106
|
```
|
106
107
|
## Options
|
107
108
|
### config_filename
|
@@ -226,9 +227,18 @@ defaults: &defaults
|
|
226
227
|
### app_env
|
227
228
|
**Type: string
|
228
229
|
Default: Rails.env if rails or ‘development’ in non rails
|
229
|
-
Availble in:
|
230
|
+
Availble in: environment, initializer, instance**
|
230
231
|
|
231
|
-
Generally not needed to specify unless you are not using rails or do not want to use `Rails.env` for lookups in config blocks.
|
232
|
+
Generally not needed to specify unless you are not using rails or do not want to use `Rails.env` for lookups in config blocks.
|
233
|
+
You can set the app_env during instance creation by passing an environment string.
|
234
|
+
The following example will use the default or any of the built in environment vairables(BIRAN_APP_ENV, RACK_ENV, RAILS_ENV) or fall back to default.
|
235
|
+
```
|
236
|
+
config = Biran::Configurinator.new
|
237
|
+
```
|
238
|
+
If you need to specify the environment on the instance directly, you can do the following to create a staging config object independent of the other app_env settings:
|
239
|
+
```
|
240
|
+
config = Biran::Configurinator.new(env: ‘staging)
|
241
|
+
```
|
232
242
|
|
233
243
|
### bindings
|
234
244
|
**Type: array
|
@@ -276,7 +286,8 @@ Default:**
|
|
276
286
|
**Available in: config file, initializer**
|
277
287
|
|
278
288
|
This config option defines which files you want to be available to generate as part of the config:generate task. Each file listed will get its own task and will be run when `rake config:generate` is run.
|
279
|
-
The default config will generate `config/vhost.conf` only. By default, all files will be generated in the `config` directory. You can override this in the options.
|
289
|
+
The default config will generate `config/vhost.conf` only. By default, all files will be generated in the `config` directory. You can override this in the options by setting an `output_dir` and/or an `output_name` to define the location and the name to be added to the extension.
|
290
|
+
NOTE: If you use the `output_name` option, the template name is still pulled from the block name. In the example below, for the reports file, the template name would be `config/_reports.yml.erb` and the block will generate a file in `/srv/app/current/reports` named `user_report.yml`.
|
280
291
|
Basic exmple from `config/app_config.yml`:
|
281
292
|
```
|
282
293
|
app:
|
@@ -290,5 +301,16 @@ app:
|
|
290
301
|
reports:
|
291
302
|
extension: ‘.yml’
|
292
303
|
output_dir: ‘/srv/app/current/reports’
|
304
|
+
output_name: ‘user_report’
|
305
|
+
```
|
306
|
+
### vhost_public_dirname
|
307
|
+
**Type: string
|
308
|
+
Default: 'public'
|
309
|
+
Available in: config file, initializer**
|
310
|
+
|
311
|
+
Used to change the value of the public web directorname for use in the vhost config. Defined in the app block
|
312
|
+
```
|
313
|
+
app:
|
314
|
+
vhost_public_dirname: 'web'
|
293
315
|
```
|
294
316
|
|
data/lib/biran/config.rb
CHANGED
@@ -13,7 +13,7 @@ module Biran
|
|
13
13
|
def app_env
|
14
14
|
return @app_env if @app_env
|
15
15
|
@app_env = Rails.env if defined? Rails
|
16
|
-
@app_env ||= 'development'
|
16
|
+
@app_env ||= 'development'.freeze
|
17
17
|
end
|
18
18
|
|
19
19
|
def base_dir
|
@@ -40,6 +40,10 @@ module Biran
|
|
40
40
|
@config_dirname ||= 'config'.freeze
|
41
41
|
end
|
42
42
|
|
43
|
+
def vhost_public_dirname
|
44
|
+
@vhost_public_dirname ||= 'public'.freeze
|
45
|
+
end
|
46
|
+
|
43
47
|
def use_capistrano
|
44
48
|
@use_capistrano ||= false
|
45
49
|
end
|
@@ -13,11 +13,16 @@ module Biran
|
|
13
13
|
use_capistrano: configuration.use_capistrano,
|
14
14
|
db_config: configuration.db_config,
|
15
15
|
secrets: configuration.secrets,
|
16
|
-
bindings: configuration.bindings
|
16
|
+
bindings: configuration.bindings,
|
17
|
+
vhost_public_dirname: configuration.vhost_public_dirname
|
17
18
|
}
|
18
19
|
}
|
19
20
|
end
|
20
21
|
|
22
|
+
def app_env
|
23
|
+
ENV['BIRAN_APP_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV'] || configuration.app_env
|
24
|
+
end
|
25
|
+
|
21
26
|
def app_base
|
22
27
|
@app_base ||= ENV['BIRAN_APP_BASE_PATH'] || app_config_defaults[:app][:base_path] || app_config_defaults[:app][:root_path]
|
23
28
|
end
|
@@ -45,6 +50,10 @@ module Biran
|
|
45
50
|
File.join(app_shared_dir, configuration.config_dirname, configuration.local_config_filename)
|
46
51
|
end
|
47
52
|
|
53
|
+
def vhost_public_dirname
|
54
|
+
ENV['BIRAN_VHOST_PUBLIC_DIRNAME'] || app_config_defaults[:app][:vhost_public_dirname]
|
55
|
+
end
|
56
|
+
|
48
57
|
def db_config_override_file
|
49
58
|
File.join(app_shared_dir, configuration.config_dirname, configuration.db_config_filename)
|
50
59
|
end
|
data/lib/biran/configurinator.rb
CHANGED
@@ -4,7 +4,7 @@ module Biran
|
|
4
4
|
|
5
5
|
DEFAULT_ENV = 'development'
|
6
6
|
|
7
|
-
attr_reader :config, :db_config
|
7
|
+
attr_reader :config, :db_config, :env
|
8
8
|
|
9
9
|
class << self
|
10
10
|
attr_accessor :config
|
@@ -13,19 +13,10 @@ module Biran
|
|
13
13
|
self.config ||= Config.instance
|
14
14
|
yield config
|
15
15
|
end
|
16
|
-
|
17
|
-
def env= env
|
18
|
-
@env = env
|
19
|
-
end
|
20
|
-
|
21
|
-
def env
|
22
|
-
return @end if @env
|
23
|
-
return Rails.env if defined? Rails
|
24
|
-
DEFAULT_ENV
|
25
|
-
end
|
26
16
|
end
|
27
17
|
|
28
|
-
def initialize
|
18
|
+
def initialize(env: nil)
|
19
|
+
@env = env || app_env
|
29
20
|
@config = build_app_config
|
30
21
|
end
|
31
22
|
|
@@ -39,9 +30,10 @@ module Biran
|
|
39
30
|
.tap { |files_list| files_list.each(&sanitize_config_files(files_list)) }
|
40
31
|
end
|
41
32
|
|
42
|
-
def create(name:, extension:, output_dir: nil)
|
33
|
+
def create(name:, extension:, output_dir: nil, output_name: nil)
|
43
34
|
output_dir ||= config_dir
|
44
|
-
|
35
|
+
output_name ||= name
|
36
|
+
generated_file = ERBConfig.new(filtered_config, name, extension, config_dir, output_dir, output_name)
|
45
37
|
generated_file.bindings = bindings
|
46
38
|
generated_file.save!
|
47
39
|
end
|
@@ -49,10 +41,12 @@ module Biran
|
|
49
41
|
private
|
50
42
|
|
51
43
|
def build_app_config
|
44
|
+
raise 'Environment not set to build the application config' unless @env
|
52
45
|
app_config = {
|
53
46
|
app_root_dir: app_root,
|
54
47
|
app_shared_dir: app_shared_dir,
|
55
48
|
app_base_dir: app_base,
|
49
|
+
env: env,
|
56
50
|
local_config_file: local_config_file,
|
57
51
|
secrets_file_path: secrets_file,
|
58
52
|
vhost: config_vhost_dirs
|
@@ -89,15 +83,15 @@ module Biran
|
|
89
83
|
config_file_contents = File.read(config_file)
|
90
84
|
config_file_contents = ERB.new(config_file_contents).result
|
91
85
|
config_file_contents = YAML.safe_load(config_file_contents, [], [], true)
|
92
|
-
config_file_contents[
|
86
|
+
config_file_contents[env].deep_symbolize_keys!
|
93
87
|
rescue Errno::ENOENT
|
94
88
|
raise "Missing config file: #{config_file}"
|
95
89
|
end
|
96
90
|
|
97
91
|
def config_vhost_dirs
|
98
92
|
{
|
99
|
-
public_dir: File.join(app_root,
|
100
|
-
shared_dir: app_shared_dir,
|
93
|
+
public_dir: File.join(app_root, vhost_public_dirname),
|
94
|
+
shared_dir: app_shared_dir.to_s,
|
101
95
|
log_dir: File.join(app_root, 'log'),
|
102
96
|
pids_dir: File.join(app_root, 'tmp', 'pids')
|
103
97
|
}
|
@@ -0,0 +1,145 @@
|
|
1
|
+
module Biran
|
2
|
+
class Configurinator
|
3
|
+
include ConfigDefaults
|
4
|
+
|
5
|
+
DEFAULT_ENV = 'development'
|
6
|
+
|
7
|
+
attr_reader :config, :db_config
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_accessor :config
|
11
|
+
|
12
|
+
def configure
|
13
|
+
self.config ||= Config.instance
|
14
|
+
yield config
|
15
|
+
end
|
16
|
+
|
17
|
+
def env= env
|
18
|
+
@env = env
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def env
|
23
|
+
return @env if @env
|
24
|
+
@env = app_env
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize
|
28
|
+
@config = build_app_config
|
29
|
+
end
|
30
|
+
|
31
|
+
def file_tasks
|
32
|
+
files_to_generate.keys
|
33
|
+
end
|
34
|
+
|
35
|
+
def debug_stuff
|
36
|
+
puts "app env2 is: #{app_env}"
|
37
|
+
puts "instance @env is #{@env}"
|
38
|
+
puts "env from method is #{env}"
|
39
|
+
puts "rack env is #{ENV['RACK_ENV']}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def files_to_generate
|
43
|
+
@files_to_generate ||= config.fetch(:app, {})
|
44
|
+
.fetch(:files_to_generate, configuration.files_to_generate)
|
45
|
+
.tap { |files_list| files_list.each(&sanitize_config_files(files_list)) }
|
46
|
+
end
|
47
|
+
|
48
|
+
def create(name:, extension:, output_dir: nil)
|
49
|
+
output_dir ||= config_dir
|
50
|
+
#debug_stuff
|
51
|
+
generated_file = ERBConfig.new(filtered_config, name, extension, config_dir, output_dir)
|
52
|
+
generated_file.bindings = bindings
|
53
|
+
generated_file.save!
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def build_app_config
|
59
|
+
app_config = {
|
60
|
+
app_root_dir: app_root,
|
61
|
+
app_shared_dir: app_shared_dir,
|
62
|
+
app_base_dir: app_base,
|
63
|
+
env: env,
|
64
|
+
local_config_file: local_config_file,
|
65
|
+
secrets_file_path: secrets_file,
|
66
|
+
vhost: config_vhost_dirs
|
67
|
+
}
|
68
|
+
|
69
|
+
app_config.deep_merge! app_config_defaults
|
70
|
+
app_config[:secrets] = get_secret_contents(app_config)
|
71
|
+
app_config[:db_config] = build_db_config
|
72
|
+
|
73
|
+
app_config.deep_merge! local_config_file_contents
|
74
|
+
end
|
75
|
+
|
76
|
+
def build_db_config
|
77
|
+
default_db_config = base_db_config
|
78
|
+
return default_db_config unless File.exist? db_config_override_file
|
79
|
+
default_db_config.deep_merge! process_config_file(db_config_override_file)
|
80
|
+
end
|
81
|
+
|
82
|
+
def base_db_config
|
83
|
+
return @base_db_config if @base_db_config
|
84
|
+
return @base_db_config = {} unless File.exists? default_db_config_file
|
85
|
+
@base_db_config ||= process_config_file(default_db_config_file)
|
86
|
+
end
|
87
|
+
|
88
|
+
def app_config_defaults
|
89
|
+
return @app_config_defaults if @app_config_defaults
|
90
|
+
app_config_file = File.join(configuration.config_dirname, configuration.config_filename)
|
91
|
+
app_defaults = app_defaults_init.dup
|
92
|
+
config_properties = process_config_file(app_config_file)
|
93
|
+
@app_config_defaults = app_defaults.deep_merge! config_properties
|
94
|
+
end
|
95
|
+
|
96
|
+
def process_config_file(config_file)
|
97
|
+
config_file_contents = File.read(config_file)
|
98
|
+
config_file_contents = ERB.new(config_file_contents).result
|
99
|
+
config_file_contents = YAML.safe_load(config_file_contents, [], [], true)
|
100
|
+
config_file_contents[env].deep_symbolize_keys!
|
101
|
+
rescue Errno::ENOENT
|
102
|
+
raise "Missing config file: #{config_file}"
|
103
|
+
end
|
104
|
+
|
105
|
+
def config_vhost_dirs
|
106
|
+
{
|
107
|
+
public_dir: File.join(app_root, vhost_public_dirname),
|
108
|
+
shared_dir: app_shared_dir.to_s,
|
109
|
+
log_dir: File.join(app_root, 'log'),
|
110
|
+
pids_dir: File.join(app_root, 'tmp', 'pids')
|
111
|
+
}
|
112
|
+
end
|
113
|
+
|
114
|
+
def local_config_file_contents
|
115
|
+
return @local_config_contents if @local_config_contents
|
116
|
+
return @local_config_conents = {} unless File.exists? local_config_file
|
117
|
+
@local_config_contents = process_config_file(local_config_file)
|
118
|
+
end
|
119
|
+
|
120
|
+
def get_secret_contents(app_config)
|
121
|
+
secrets_file_contents = {}
|
122
|
+
if File.exist? app_config[:secrets_file_path]
|
123
|
+
secrets_file_contents = process_config_file app_config[:secrets_file_path]
|
124
|
+
end
|
125
|
+
secrets_file_contents
|
126
|
+
end
|
127
|
+
|
128
|
+
def sanitize_config_files files_list
|
129
|
+
lambda do |file, _|
|
130
|
+
files_list[file] ||= {extension: ''}
|
131
|
+
ext = files_list[file].fetch(:extension, '').strip
|
132
|
+
ext.prepend('.') unless ext.start_with?('.') || ext.empty?
|
133
|
+
files_list[file][:extension] = ext
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def filtered_config
|
138
|
+
@filtered_config ||= config.except(*configuration.app_setup_blocks)
|
139
|
+
end
|
140
|
+
|
141
|
+
def use_capistrano?
|
142
|
+
app_config_defaults[:app][:use_capistrano]
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
data/lib/biran/erb_config.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
module Biran
|
2
2
|
class ERBConfig
|
3
|
-
attr_reader :output_dir, :source_dir, :name, :extension, :config
|
3
|
+
attr_reader :output_dir, :source_dir, :name, :extension, :config, :output_name
|
4
4
|
attr_accessor :bindings
|
5
5
|
|
6
|
-
def initialize(config, name, extension, source,
|
6
|
+
def initialize(config, name, extension, source, output_dir, output_name)
|
7
7
|
@name = name
|
8
8
|
@extension = extension
|
9
9
|
@config = config
|
10
10
|
@source_dir = source
|
11
|
-
@output_dir =
|
11
|
+
@output_dir = output_dir
|
12
|
+
@output_name = output_name
|
12
13
|
end
|
13
14
|
|
14
15
|
def save!
|
15
|
-
File.open(File.join(output_dir, "#{
|
16
|
+
File.open(File.join(output_dir, "#{output_name}#{extension}"), 'w') do |f|
|
16
17
|
f.print process_erb.result(build_erb_env.call)
|
17
18
|
end
|
18
19
|
end
|
@@ -26,7 +27,7 @@ module Biran
|
|
26
27
|
|
27
28
|
def build_erb_env
|
28
29
|
proc do
|
29
|
-
@environment =
|
30
|
+
@environment = config[:env]
|
30
31
|
@app_config = config
|
31
32
|
|
32
33
|
@bindings.each(&assign_instance_vars) unless @bindings.nil?
|
data/lib/biran/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biran
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- javierg
|
@@ -10,50 +10,50 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2019-05-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 5.0.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 5.0.7
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: activesupport
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - "
|
33
|
+
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: 5.0.7
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - "
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: 5.0.7
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: 5.0.7
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - "
|
54
|
+
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: 5.0.7
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: bundler
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/biran/config.rb
|
126
126
|
- lib/biran/config_defaults.rb
|
127
127
|
- lib/biran/configurinator.rb
|
128
|
+
- lib/biran/configurinator.rb.debug
|
128
129
|
- lib/biran/erb_config.rb
|
129
130
|
- lib/biran/railtie.rb
|
130
131
|
- lib/biran/version.rb
|
@@ -148,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
149
|
- !ruby/object:Gem::Version
|
149
150
|
version: '0'
|
150
151
|
requirements: []
|
151
|
-
|
152
|
-
rubygems_version: 2.5.2.1
|
152
|
+
rubygems_version: 3.0.3
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: Helper for generating config generate tasks.
|