fume-settable 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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 # return "@ruby"
40
- Project.settings.yaml # return "@yaml"
41
- Project.settings.lambda # return "@lambda"
42
- Project.settings.method # return "@method"
43
- Project.settings.unknow # return nil
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
1
+ 0.0.2
data/lib/fume-settable.rb CHANGED
@@ -1,7 +1,9 @@
1
+
1
2
  module Fume
2
3
  module Settable
3
4
  VERSION = File.read(File.expand_path("../../VERSION", __FILE__)).chomp
4
5
  end
5
6
  end
6
7
 
8
+ require "active_support/all"
7
9
  require File.expand_path('../fume-settable/base', __FILE__)
@@ -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.1
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-07-13 00:00:00.000000000 Z
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: 3491969668467509048
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: 3491969668467509048
121
+ hash: 3154248052716656931
121
122
  requirements: []
122
123
  rubyforge_project:
123
124
  rubygems_version: 1.8.24