config_file 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/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/config_file.gemspec CHANGED
@@ -16,4 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.version = ConfigFile::VERSION
17
17
 
18
18
  gem.add_dependency("blankslate")
19
+
20
+ gem.add_development_dependency('rspec')
19
21
  end
data/lib/config_file.rb CHANGED
@@ -2,39 +2,14 @@ require "config_file/version"
2
2
  require 'yaml'
3
3
  require 'pathname'
4
4
  require 'erb'
5
+ require 'blankslate'
5
6
 
6
- class ConfigFile < BlankSlate
7
+ require 'config_file/file'
8
+ require 'config_file/include'
9
+
10
+ module ConfigFile
7
11
  class UnknownConfigFile < ArgumentError; end
8
12
  class UnknownKey < StandardError; end
9
- attr_writer :raise_on_missing_key
10
-
11
- def initialize file
12
- @file = file
13
- @raise_on_missing_key = false
14
- end
15
-
16
- def method_missing(key,*args)
17
- @data = nil if ConfigFile.dev?
18
- if data.has_key?(key)
19
- data[key]
20
- elsif data.has_key?(key.to_s)
21
- data[key.to_s]
22
- else
23
- @raise_on_missing_key ? raise(UnknownKey, "#{key} couldn't be found in #{@file}") : nil
24
- end
25
- end
26
-
27
- def __data__
28
- @data ||= begin
29
- d = nil
30
- File.open(@file) do |f|
31
- d = YAML.load ERB.new(f.read).result
32
- end
33
- d = d[ConfigFile.env] if d.has_key? ConfigFile.env
34
- d
35
- end
36
- end
37
- alias data __data__
38
13
 
39
14
  ALL = {}
40
15
  class << self
@@ -55,7 +30,7 @@ class ConfigFile < BlankSlate
55
30
  when defined?(Rails)
56
31
  Rails.root
57
32
  else
58
- Pathname.new(File.expand_path('.'))
33
+ ::Pathname.new(File.expand_path('.'))
59
34
  end
60
35
  end
61
36
 
@@ -69,7 +44,7 @@ class ConfigFile < BlankSlate
69
44
 
70
45
  def method_missing(name,*args)
71
46
  ALL[name] ||= if file = find_file(name)
72
- new(file)
47
+ File.new(file)
73
48
  else
74
49
  raise UnknownConfigFile, "couldn't find file at 'config/#{name}.yml'"
75
50
  end
@@ -84,7 +59,7 @@ class ConfigFile < BlankSlate
84
59
  files << root+"#{dir}/#{name}.yaml"
85
60
  end
86
61
  files.find do |f|
87
- File.exist?(f)
62
+ ::File.exist?(f)
88
63
  end
89
64
  end
90
65
  end
@@ -0,0 +1,32 @@
1
+ module ConfigFile
2
+ class File < BlankSlate
3
+ attr_writer :raise_on_missing_key
4
+
5
+ def initialize file
6
+ @file = file
7
+ @raise_on_missing_key = false
8
+ end
9
+
10
+ def method_missing(key,*args)
11
+ @data = nil if ConfigFile.dev?
12
+ if val = (data[key] || data[key.to_s])
13
+ val
14
+ else
15
+ @raise_on_missing_key ? raise(UnknownKey, "#{key} couldn't be found in #{@file}") : nil
16
+ end
17
+ end
18
+
19
+ def __data__
20
+ @data ||= begin
21
+ d = nil
22
+ ::File.open(@file) do |f|
23
+ d = YAML.load ERB.new(f.read).result
24
+ end
25
+ d = d[ConfigFile.env] if d.has_key? ConfigFile.env
26
+ d
27
+ end
28
+ end
29
+ alias data __data__
30
+
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ module ConfigFile
2
+ module ClassMethods
3
+ attr_reader :config_file
4
+
5
+ def config_file_name=file
6
+ @config_file = ConfigFile.send(file)
7
+ end
8
+
9
+ def __setup_config_methods__
10
+ @config_file.__data__.each do |k,v|
11
+ instance_eval <<-RUBY
12
+ def #{k}
13
+ @config_file.#{k}
14
+ end
15
+ RUBY
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ module InstanceMethods
22
+ end
23
+
24
+ def self.included(receiver)
25
+ word = receiver.to_s
26
+ word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
27
+ word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
28
+ word.tr!("-", "_")
29
+ word.downcase!
30
+
31
+ receiver.extend ClassMethods
32
+ receiver.send :include, InstanceMethods
33
+
34
+ receiver.config_file_name = word
35
+ receiver.__setup_config_methods__
36
+ end
37
+ end
@@ -1,5 +1,3 @@
1
- require 'blankslate'
2
-
3
- class ConfigFile < BlankSlate
4
- VERSION = "0.0.1"
1
+ module ConfigFile
2
+ VERSION = "0.0.2"
5
3
  end
@@ -0,0 +1,2 @@
1
+ base: foo
2
+ bar: baz
@@ -0,0 +1,2 @@
1
+ key1: key1
2
+ key2: key2
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'ConfigFile' do
4
+
5
+ context "no namespaceing" do
6
+ it "should get the value" do
7
+ ConfigFile.base.base.should == 'foo'
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ module IncludeTest
4
+ include ConfigFile
5
+ end
6
+
7
+ describe "ConfigFile" do
8
+ it "should look for include_test.yml" do
9
+ IncludeTest.config_file.should_not be_a(ConfigFile::File)
10
+ end
11
+
12
+ it "should define methods for each key" do
13
+ IncludeTest.should respond_to(:key1)
14
+ IncludeTest.should respond_to(:key2)
15
+ end
16
+
17
+ it "should return expected value" do
18
+ IncludeTest.key1.should == 'key1'
19
+ IncludeTest.key2.should == 'key2'
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ # f = File.expand_path('../../lib',__FILE__)
8
+ # $:.unshift(f) unless $:.include?(f)
9
+
10
+ require File.expand_path('lib/config_file')
11
+
12
+ RSpec.configure do |config|
13
+ config.treat_symbols_as_metadata_keys_with_true_values = true
14
+ config.run_all_when_everything_filtered = true
15
+ config.filter_run :focus
16
+ end
17
+
18
+ ConfigFile.root = Pathname.new(File.expand_path('..',__FILE__))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config_file
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,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-09 00:00:00.000000000Z
12
+ date: 2012-04-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: blankslate
16
- requirement: &70136086881140 !ruby/object:Gem::Requirement
16
+ requirement: &70167225021520 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,18 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70136086881140
24
+ version_requirements: *70167225021520
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70167225020880 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70167225020880
25
36
  description: Gem for quickly reading from config files
26
37
  email:
27
38
  - me@tal.by
@@ -30,13 +41,21 @@ extensions: []
30
41
  extra_rdoc_files: []
31
42
  files:
32
43
  - .gitignore
44
+ - .rspec
33
45
  - Gemfile
34
46
  - LICENSE
35
47
  - README.md
36
48
  - Rakefile
37
49
  - config_file.gemspec
38
50
  - lib/config_file.rb
51
+ - lib/config_file/file.rb
52
+ - lib/config_file/include.rb
39
53
  - lib/config_file/version.rb
54
+ - spec/config/base.yml
55
+ - spec/config/include_test.yaml
56
+ - spec/config_file_spec.rb
57
+ - spec/include_spec.rb
58
+ - spec/spec_helper.rb
40
59
  homepage: http://github.com/talby/config_file
41
60
  licenses: []
42
61
  post_install_message:
@@ -61,4 +80,9 @@ rubygems_version: 1.8.10
61
80
  signing_key:
62
81
  specification_version: 3
63
82
  summary: Gem for quickly reading from config files
64
- test_files: []
83
+ test_files:
84
+ - spec/config/base.yml
85
+ - spec/config/include_test.yaml
86
+ - spec/config_file_spec.rb
87
+ - spec/include_spec.rb
88
+ - spec/spec_helper.rb