ef-config 1.4.1

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.
@@ -0,0 +1,15 @@
1
+ module Config
2
+ module Rack
3
+ # Rack middleware the reloads Config on every request (only use in dev mode)
4
+ class Reloader
5
+ def initialize(app)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ Config.reload!
11
+ @app.call(env)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module Config
2
+ module Sources
3
+ class HashSource
4
+ attr_accessor :hash
5
+
6
+ def initialize(hash)
7
+ @hash = hash
8
+ end
9
+
10
+ # returns hash that was passed in to initialize
11
+ def load
12
+ hash.is_a?(Hash) ? hash : {}
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ require 'yaml'
2
+ require 'erb'
3
+
4
+ module Config
5
+ module Sources
6
+ class YAMLSource
7
+ attr_accessor :path, :namespace
8
+
9
+ def initialize(path, namespace=nil)
10
+ @path = path
11
+ @namespace = namespace
12
+ end
13
+
14
+ # returns a config hash from the YML file
15
+ def load
16
+ if @path and File.exist?(@path.to_s)
17
+ result = YAML.load(ERB.new(IO.read(@path.to_s)).result)
18
+ end
19
+ if self.namespace
20
+ namespaces = self.namespace.split("/")
21
+ result = namespaces.reverse.inject(result || {}) { |acc, space| { space => acc } }
22
+ end
23
+ result || {}
24
+ rescue Psych::SyntaxError => e
25
+ raise "YAML syntax error occurred while parsing #{@path}. " \
26
+ "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
27
+ "Error: #{e.message}"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ require 'config/integrations/heroku'
2
+
3
+ namespace 'config' do
4
+ task :heroku, [:app] => :environment do |_, args|
5
+ Config::Integrations::Heroku.new(args[:app]).invoke
6
+ end
7
+ end
@@ -0,0 +1,24 @@
1
+ module Config
2
+ module Validation
3
+ class Error < StandardError
4
+
5
+ def self.format(v_res)
6
+ flatten_hash(v_res.messages).map do |field, msgs|
7
+ "#{' ' * 2}#{field}: #{msgs.join('; ')}"
8
+ end.join('\n')
9
+ end
10
+
11
+ def self.flatten_hash(h, acc={}, pref=[])
12
+ h.inject(acc) do |a, (k, v)|
13
+ if v.is_a?(Hash)
14
+ flatten_hash(v, acc, pref + [k])
15
+ else
16
+ acc[(pref + [k]).join('.')] = v
17
+ acc
18
+ end
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ require 'dry-validation'
2
+ require 'config/validation/schema'
3
+
4
+ module Config
5
+ module Validation
6
+ module Schema
7
+
8
+ mattr_writer :schema
9
+ @@schema = nil
10
+
11
+ def schema(&block)
12
+ if block_given?
13
+ @@schema = Dry::Validation.Schema(&block)
14
+ else
15
+ @@schema
16
+ end
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ require 'config/validation/error'
2
+
3
+ module Config
4
+ module Validation
5
+ module Validate
6
+
7
+ def validate!
8
+ if Config.schema
9
+ v_res = Config.schema.(self.to_hash)
10
+
11
+ unless v_res.success?
12
+ raise Config::Validation::Error.new("Config validation failed:\n\n#{Config::Validation::Error.format(v_res)}")
13
+ end
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module Config
2
+ VERSION = '1.4.1'
3
+ end
@@ -0,0 +1,32 @@
1
+ module Config
2
+ module Generators
3
+ class InstallGenerator < ::Rails::Generators::Base
4
+ desc "Generates a custom Rails Config initializer file."
5
+
6
+ def self.source_root
7
+ @_config_source_root ||= File.expand_path("../templates", __FILE__)
8
+ end
9
+
10
+ def copy_initializer
11
+ template "config.rb", "config/initializers/config.rb"
12
+ end
13
+
14
+ def copy_settings
15
+ template "settings.yml", "config/settings.yml"
16
+ template "settings.local.yml", "config/settings.local.yml"
17
+ directory "settings", "config/settings"
18
+ end
19
+
20
+ def modify_gitignore
21
+ create_file '.gitignore' unless File.exists? '.gitignore'
22
+
23
+ append_to_file '.gitignore' do
24
+ "\n" +
25
+ "config/settings.local.yml\n" +
26
+ "config/settings/*.local.yml\n" +
27
+ "config/environments/*.local.yml\n"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,45 @@
1
+ Config.setup do |config|
2
+ # Name of the constant exposing loaded settings
3
+ config.const_name = 'Settings'
4
+
5
+ # Ability to remove elements of the array set in earlier loaded settings file. For example value: '--'.
6
+ #
7
+ # config.knockout_prefix = nil
8
+
9
+ # Overwrite arrays found in previously loaded settings file. When set to `false`, arrays will be merged.
10
+ #
11
+ # config.overwrite_arrays = true
12
+
13
+ # Load environment variables from the `ENV` object and override any settings defined in files.
14
+ #
15
+ # config.use_env = false
16
+
17
+ # Define ENV variable prefix deciding which variables to load into config.
18
+ #
19
+ # config.env_prefix = 'Settings'
20
+
21
+ # What string to use as level separator for settings loaded from ENV variables. Default value of '.' works well
22
+ # with Heroku, but you might want to change it for example for '__' to easy override settings from command line, where
23
+ # using dots in variable names might not be allowed (eg. Bash).
24
+ #
25
+ # config.env_separator = '.'
26
+
27
+ # Ability to process variables names:
28
+ # * nil - no change
29
+ # * :downcase - convert to lower case
30
+ #
31
+ # config.env_converter = :downcase
32
+
33
+ # Parse numeric values as integers instead of strings.
34
+ #
35
+ # config.env_parse_values = true
36
+
37
+ # Validate presence and type of specific config values. Check https://github.com/dry-rb/dry-validation for details.
38
+ #
39
+ # config.schema do
40
+ # required(:name).filled
41
+ # required(:age).maybe(:int?)
42
+ # required(:email).filled(format?: EMAIL_REGEX)
43
+ # end
44
+
45
+ end
File without changes
File without changes
@@ -0,0 +1,24 @@
1
+ # README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
metadata ADDED
@@ -0,0 +1,334 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ef-config
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.1
5
+ platform: ruby
6
+ authors:
7
+ - Hadley
8
+ - Piotr Kuczynski
9
+ - Fred Wu
10
+ - Jacques Crocker
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2018-12-03 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: activesupport
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '3.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: deep_merge
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: 1.1.1
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: 1.1.1
44
+ - !ruby/object:Gem::Dependency
45
+ name: dry-validation
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 0.10.4
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: 0.10.4
58
+ - !ruby/object:Gem::Dependency
59
+ name: bundler
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '1.13'
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.13.6
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.13'
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 1.13.6
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '12.0'
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 12.0.0
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '12.0'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 12.0.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: appraisal
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '2.1'
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 2.1.0
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '2.1'
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 2.1.0
118
+ - !ruby/object:Gem::Dependency
119
+ name: rails
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '5.0'
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 5.0.1
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '5.0'
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 5.0.1
138
+ - !ruby/object:Gem::Dependency
139
+ name: rspec
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '3.5'
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: 3.5.0
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: '3.5'
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: 3.5.0
158
+ - !ruby/object:Gem::Dependency
159
+ name: rspec-rails
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '3.5'
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: 3.5.2
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '3.5'
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: 3.5.2
178
+ - !ruby/object:Gem::Dependency
179
+ name: test-unit
180
+ requirement: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '3.2'
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 3.2.1
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '3.2'
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: 3.2.1
198
+ - !ruby/object:Gem::Dependency
199
+ name: sqlite3
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '1.3'
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 1.3.11
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.3'
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: 1.3.11
218
+ - !ruby/object:Gem::Dependency
219
+ name: pry
220
+ requirement: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ type: :development
226
+ prerelease: false
227
+ version_requirements: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ - !ruby/object:Gem::Dependency
233
+ name: mdl
234
+ requirement: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - "~>"
237
+ - !ruby/object:Gem::Version
238
+ version: '0.4'
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: 0.4.0
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '0.4'
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: 0.4.0
252
+ - !ruby/object:Gem::Dependency
253
+ name: rubocop
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: '0.46'
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: 0.46.0
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - "~>"
267
+ - !ruby/object:Gem::Version
268
+ version: '0.46'
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: 0.46.0
272
+ description: Everfest fork of config gem
273
+ email:
274
+ - hadley@everfest.com
275
+ executables: []
276
+ extensions: []
277
+ extra_rdoc_files:
278
+ - README.md
279
+ - CHANGELOG.md
280
+ - LICENSE.md
281
+ files:
282
+ - CHANGELOG.md
283
+ - LICENSE.md
284
+ - README.md
285
+ - config.gemspec
286
+ - lib/config.rb
287
+ - lib/config/compatibility.rb
288
+ - lib/config/integrations/heroku.rb
289
+ - lib/config/integrations/rails/engine.rb
290
+ - lib/config/integrations/rails/railtie.rb
291
+ - lib/config/integrations/sinatra.rb
292
+ - lib/config/options.rb
293
+ - lib/config/rack/reloader.rb
294
+ - lib/config/sources/hash_source.rb
295
+ - lib/config/sources/yaml_source.rb
296
+ - lib/config/tasks/heroku.rake
297
+ - lib/config/validation/error.rb
298
+ - lib/config/validation/schema.rb
299
+ - lib/config/validation/validate.rb
300
+ - lib/config/version.rb
301
+ - lib/generators/config/install_generator.rb
302
+ - lib/generators/config/templates/config.rb
303
+ - lib/generators/config/templates/settings.local.yml
304
+ - lib/generators/config/templates/settings.yml
305
+ - lib/generators/config/templates/settings/development.yml
306
+ - lib/generators/config/templates/settings/production.yml
307
+ - lib/generators/config/templates/settings/test.yml
308
+ - spec/app/rails_5/README.md
309
+ homepage: https://bitbucket.org/everfest/config
310
+ licenses:
311
+ - MIT
312
+ metadata: {}
313
+ post_install_message:
314
+ rdoc_options:
315
+ - "--charset=UTF-8"
316
+ require_paths:
317
+ - lib
318
+ required_ruby_version: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: 2.0.0
323
+ required_rubygems_version: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ requirements: []
329
+ rubyforge_project:
330
+ rubygems_version: 2.7.6
331
+ signing_key:
332
+ specification_version: 4
333
+ summary: Effortless multi-environment settings in Rails, Sinatra, Pandrino and others
334
+ test_files: []