sting 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ddebedec4cecec6db3c92d487c60b6a4b841a5aeb93ad668ef101a12ece92334
4
- data.tar.gz: 401bc1ff2e7c00631bca054a957fc28475094c85ec6b368f207ebe1185100855
3
+ metadata.gz: 1b4cb2c0a668bf879e98ac401f7419678288949857b8ed055daf23a41cc6b7e7
4
+ data.tar.gz: e3c52cd17082f8cd7ce774aaa404ec1bc87091f09d3d5b5223d8e8fb70377b4c
5
5
  SHA512:
6
- metadata.gz: 6076bc7d1301e66d30074d06ac3601aabd9461ba71e68362af647e081714305c402cea41b1d88276ec5d6d6e0cd466dfdbd8067ee41e7f5e6bd8a6f7d7ad1e33
7
- data.tar.gz: ff0ff3133cae18cedbf06106a66ded80dacabc3ad184f35fe11893d2e5ae994a32093d149c5cc9ec2437fd6e13d1ab7f76ed559f94c17a894d06feed53510dbb
6
+ metadata.gz: 00dd281cbc65ec4365686ae4137c011397a18f1e12bef0bea99ae46d63a119d9f30063f3601de1ddc294cfe921808df515ad1d58454eba14e027413dc56dd044
7
+ data.tar.gz: ae1d6134e99010e99d9a06a836b28db0429c23236fcbb1ca614cfa1a06582825af0e728bfba7d28c265a9408b79984392e81f9ddaa12e89bb97f43c1d33cbbf9
data/README.md CHANGED
@@ -15,9 +15,38 @@ Sting is a minimal, lightweight, multi-YAML settings library.
15
15
  Installation
16
16
  --------------------------------------------------
17
17
 
18
- $ gem install sting
18
+ ```shell
19
+ $ gem install sting
20
+ ```
21
+
22
+
23
+ Why was this made?
24
+ --------------------------------------------------
25
+
26
+ Sting was made to replace the Rails Config gem, which has an unreasonable
27
+ amount of dependencies (i.e. the dry-validation gem, its children and
28
+ grandchildren...).
29
+
30
+
31
+ Features
32
+ --------------------------------------------------
33
+
34
+ - [Aggressively minimalistic][1], no dependencies, no monkey-patching, no magic.
35
+ - Settings are accessible through a globally available class.
36
+ - Load and merge one or more YAML files or hashes.
37
+ - Settings objects are standard ruby hashes, arrays and basic types.
38
+ - Ability to update settings at runtime.
39
+ - ERB code in the YAML files will be evaluated.
19
40
 
20
41
 
42
+ Nonfeatures
43
+ --------------------------------------------------
44
+
45
+ - No dot notation access to nested values - Use `Settings.server['host']`
46
+ instead of `Settings.server.host` - to avoid having to monkey-patch hashes.
47
+ - No special generators for Rails.
48
+ [Usage with rails is still trivial](#using-with-rails).
49
+
21
50
 
22
51
  Usage
23
52
  --------------------------------------------------
@@ -25,21 +54,72 @@ Usage
25
54
  ```ruby
26
55
  require 'sting'
27
56
 
28
- # If you want to use a different name than Sting
57
+ # If you want to use a different name than Sting (optional)
29
58
  Settings = Sting
30
59
 
31
- # Load some YAML files
60
+ # Load some YAML files. If the provided filename does end with '.yml' or
61
+ # '.yaml', we will add '.yml' to it.
32
62
  Settings << 'one'
33
- Settings << 'two'
63
+ Settings << 'two.yml'
64
+
65
+ # Merge with another options hash
66
+ Settings << { port: 3000, host: 'localhost' }
34
67
 
35
68
  # Access values
36
- p Settings.hello
37
- p Settings['hello']
38
- p Settings[:hello]
69
+ p Settings.host
70
+ p Settings['host']
71
+ p Settings[:host]
72
+
73
+ # Access nested values
74
+ p Settings.server['host']
39
75
 
40
76
  # Access all values
41
- p Settings.all
77
+ p Settings.settings
42
78
 
43
79
  # Check if a key is defined
44
80
  p Settings.has_key? :hello
81
+
82
+ # Access value, but raise an exception if it does not exist
83
+ p Settings.host!
84
+
85
+ # Access boolean values, or check if a key exists
86
+ p Settings.host?
87
+
88
+ # Update a value (in memory only, not in file)
89
+ Settings.port = 3000
90
+
91
+ # Reset (erase) all values
92
+ Settings.reset!
45
93
  ```
94
+
95
+
96
+ Using with Rails
97
+ --------------------------------------------------
98
+
99
+ You can use this however you wish in Rails. This is the recommended
100
+ implementation:
101
+
102
+ Add sting to your Gemfile:
103
+
104
+ ```ruby
105
+ gem 'sting'
106
+ ```
107
+
108
+ Create an initializer:
109
+
110
+ ```ruby
111
+ # config/initializers/settings.rb
112
+ Settings = Sting
113
+ Settings << "#{Rails.root}/config/settings"
114
+ Settings << "#{Rails.root}/config/settings/#{Rails.env}"
115
+ ```
116
+
117
+ Create four config files:
118
+
119
+ - config/**settings**.yml
120
+ - config/settings/**development**.yml
121
+ - config/settings/**production**.yml
122
+ - config/settings/**test**.yml
123
+
124
+
125
+ [1]: https://github.com/DannyBen/sting/blob/master/lib/sting.rb
@@ -3,10 +3,14 @@ require 'erb'
3
3
 
4
4
  class Sting
5
5
  class << self
6
- def <<(path)
7
- path = "#{path}.yml" unless path =~ /\.ya?ml$/
8
- content = File.read path
9
- content = YAML.load(ERB.new(content).result)
6
+ def <<(source)
7
+ if source.is_a? Hash
8
+ content = source.collect{ |k,v| [k.to_s, v] }.to_h
9
+ else
10
+ source = "#{source}.yml" unless source =~ /\.ya?ml$/
11
+ content = File.read source
12
+ content = YAML.load(ERB.new(content).result)
13
+ end
10
14
  settings.merge! content if content
11
15
  end
12
16
 
@@ -1,3 +1,3 @@
1
1
  class Sting
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-28 00:00:00.000000000 Z
11
+ date: 2018-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug