fume-settable 0.0.1 → 0.0.2
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.
- data/README.md +10 -5
- data/VERSION +1 -1
- data/lib/fume-settable.rb +2 -0
- data/lib/fume-settable/base.rb +10 -3
- data/lib/fume-settable/mem_hash_provider.rb +30 -0
- data/lib/fume-settable/ruby_provider.rb +2 -2
- data/lib/fume-settable/yaml_provider.rb +2 -2
- metadata +5 -4
data/README.md
CHANGED
@@ -22,6 +22,7 @@ Or install it yourself as:
|
|
22
22
|
ruby_provider Rails.root.join("config/application.local.rb") # ruby provider
|
23
23
|
append_providers ->(name) { "@lambda" if name == "lambda" } # lambda provider
|
24
24
|
append_providers :fetch_on_method # method provider
|
25
|
+
mem_hash_provider # mem hash provider
|
25
26
|
|
26
27
|
def fetch_on_method(name)
|
27
28
|
"@method" if name == "method"
|
@@ -36,11 +37,15 @@ Or install it yourself as:
|
|
36
37
|
|
37
38
|
### 2. Run
|
38
39
|
|
39
|
-
Project.settings.ruby
|
40
|
-
Project.settings.yaml
|
41
|
-
Project.settings.lambda
|
42
|
-
Project.settings.method
|
43
|
-
Project.settings.unknow
|
40
|
+
Project.settings.ruby # return "@ruby"
|
41
|
+
Project.settings.yaml # return "@yaml"
|
42
|
+
Project.settings.lambda # return "@lambda"
|
43
|
+
Project.settings.method # return "@method"
|
44
|
+
Project.settings.unknow # return nil
|
45
|
+
|
46
|
+
Project.settings.memhash # return nil
|
47
|
+
Project.settings.memhash = 1 #
|
48
|
+
Project.settings.memhash # return 1
|
44
49
|
|
45
50
|
## Contributing
|
46
51
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/fume-settable.rb
CHANGED
data/lib/fume-settable/base.rb
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
require File.expand_path('../ruby_provider', __FILE__)
|
2
2
|
require File.expand_path('../yaml_provider', __FILE__)
|
3
|
+
require File.expand_path('../mem_hash_provider', __FILE__)
|
3
4
|
|
4
5
|
module Fume
|
5
6
|
module Settable
|
6
7
|
class Base
|
7
8
|
include YamlProvider
|
8
9
|
include RubyProvider
|
10
|
+
include MemHashProvider
|
11
|
+
|
9
12
|
class_attribute :providers
|
10
13
|
self.providers = []
|
11
14
|
|
12
|
-
def self.fetch(name)
|
15
|
+
def self.fetch(name, *args, &block)
|
13
16
|
(self.providers || []).each do |provider|
|
14
|
-
value = provider.call(name.to_s)
|
15
|
-
return value if value
|
17
|
+
value = provider.call(name.to_s, *args, &block)
|
18
|
+
return value if !value.nil?
|
16
19
|
end
|
17
20
|
nil
|
18
21
|
end
|
@@ -41,6 +44,10 @@ module Fume
|
|
41
44
|
def [](name)
|
42
45
|
@callback.call(name)
|
43
46
|
end
|
47
|
+
|
48
|
+
def []=(name, *args, &block)
|
49
|
+
@callback.call("#{name}=", *args, &block)
|
50
|
+
end
|
44
51
|
|
45
52
|
def method_missing(name, *args, &block)
|
46
53
|
@callback.call(name, *args, &block)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
require "hashie"
|
3
|
+
|
4
|
+
module Fume
|
5
|
+
module Settable
|
6
|
+
module MemHashProvider
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def mem_hash_provider
|
11
|
+
append_providers ProviderMemHash.new
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class ProviderMemHash
|
16
|
+
def initialize
|
17
|
+
@data = Hashie::Mash.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def settings
|
21
|
+
@data
|
22
|
+
end
|
23
|
+
|
24
|
+
def call(name, *args, &block)
|
25
|
+
@data.send(name, *args, &block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -16,7 +16,7 @@ module Settable
|
|
16
16
|
def initialize(*files)
|
17
17
|
files = [ files ].flatten
|
18
18
|
@data = Hashie::Mash.new
|
19
|
-
files.each do |file|
|
19
|
+
files.reverse.each do |file|
|
20
20
|
next if !File.exist?(file)
|
21
21
|
instance_eval File.read(file), file.to_s
|
22
22
|
end
|
@@ -26,7 +26,7 @@ module Settable
|
|
26
26
|
@data
|
27
27
|
end
|
28
28
|
|
29
|
-
def call(name)
|
29
|
+
def call(name, *args, &block)
|
30
30
|
@data[name]
|
31
31
|
end
|
32
32
|
end
|
@@ -15,14 +15,14 @@ module Settable
|
|
15
15
|
def initialize(*files)
|
16
16
|
files = [ files ].flatten
|
17
17
|
@data = {}
|
18
|
-
files.each do |file|
|
18
|
+
files.reverse.each do |file|
|
19
19
|
next if !File.exist?(file)
|
20
20
|
content = YAML.load(File.read(file))
|
21
21
|
@data = @data.deep_merge(content) if content
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def call(name)
|
25
|
+
def call(name, *args, &block)
|
26
26
|
@data[name]
|
27
27
|
end
|
28
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fume-settable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- fume-settable.gemspec
|
92
92
|
- lib/fume-settable.rb
|
93
93
|
- lib/fume-settable/base.rb
|
94
|
+
- lib/fume-settable/mem_hash_provider.rb
|
94
95
|
- lib/fume-settable/ruby_provider.rb
|
95
96
|
- lib/fume-settable/yaml_provider.rb
|
96
97
|
- lib/fume/settable.rb
|
@@ -108,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
109
|
version: '0'
|
109
110
|
segments:
|
110
111
|
- 0
|
111
|
-
hash:
|
112
|
+
hash: 3154248052716656931
|
112
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
114
|
none: false
|
114
115
|
requirements:
|
@@ -117,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
118
|
version: '0'
|
118
119
|
segments:
|
119
120
|
- 0
|
120
|
-
hash:
|
121
|
+
hash: 3154248052716656931
|
121
122
|
requirements: []
|
122
123
|
rubyforge_project:
|
123
124
|
rubygems_version: 1.8.24
|