ef-config 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []