simple-conf 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NzdmMGFjYjEyYmZhYWQxOGUzNzRlN2ZlYmY4ZGMxZWZlMDdiODBiMg==
5
+ data.tar.gz: !binary |-
6
+ YzhjNTM5ZWQyMWFlNmYzNzBkNzNjZjVhN2U4YzhiMTJhYTdkODcyZg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ Y2M4NDMwYmY2YzZhZDI3ZTMyNDZhMjRkY2NiMDRlYmRmNWUwYTFlNzZlODgy
10
+ MTU0YTQ5MmUyYjk5YTVjMzg4ODgxMzk4NTg2MmVkMzFlNjQxMDg2MjcwNzY1
11
+ MjhmYjdhMjVkMTZlZDhhOWI5ODlmMTg0ODEwNWI3MTNkYzZjMGQ=
12
+ data.tar.gz: !binary |-
13
+ Y2MxNmEzN2JhYTYxN2QxM2EzYTMwMjlmMmU5MGNkNWQxZTRhNDdkODUzMmY1
14
+ NTdkNjA4ZjJmZGRmZDU5N2RiMzEyZDVhZTFhM2E1Nzc5Yzc4ZWQ2MzQ5Mjdh
15
+ NDBhZWZjYTdhY2VjMmVjMGY2NThkNGNmMjU2MWE4Y2EyYTQyNDI=
data/.vimrc ADDED
@@ -0,0 +1,5 @@
1
+
2
+ let g:turbux_command_prefix=''
3
+ let g:turbux_command_rspec = 'rspec'
4
+ let g:turbux_command_test_unit = 'ruby -Itest'
5
+ let g:turbux_command_cucumber = 'cucumber'
@@ -0,0 +1,2 @@
1
+ group2:
2
+ key2: value2
@@ -0,0 +1,2 @@
1
+ group1:
2
+ key1: value1
@@ -5,30 +5,36 @@ require 'erb'
5
5
  module SimpleConf
6
6
  Loader = Struct.new(:klass) do
7
7
  def run
8
- yaml_file.each_pair do |key, value|
9
- set(key, value)
10
- end
8
+ paths.each do |path|
9
+ yaml_file(path).each_pair do |key, value|
10
+ set(key, value)
11
+ end
11
12
 
12
- yaml_file.fetch(Rails.env, {}).each_pair do |key, value|
13
- set(key, value)
14
- end if rails_environment_defined?
13
+ yaml_file(path).fetch(Rails.env, {}).each_pair do |key, value|
14
+ set(key, value)
15
+ end if rails_environment_defined?
15
16
 
16
- yaml_file.fetch(klass.env, {}).each_pair do |key, value|
17
- set(key, value)
18
- end if klass.respond_to?(:env)
17
+ yaml_file(path).fetch(klass.env, {}).each_pair do |key, value|
18
+ set(key, value)
19
+ end if klass.respond_to?(:env)
20
+ end
19
21
  end
20
22
 
21
- def path
22
- "./config/#{config_file_name}"
23
+ def paths
24
+ [
25
+ "./config/#{config_file_name}.yml",
26
+ "./config/#{config_file_name}.local.yml",
27
+ ]
23
28
  end
24
29
 
25
30
  def config_file_name
26
31
  klass.respond_to?(:config_file_name) ?
27
32
  klass.config_file_name :
28
- "#{klass.name.downcase.split("::").last}.yml"
33
+ "#{klass.name.downcase.split("::").last}"
29
34
  end
30
35
 
31
- def yaml_file
36
+ def yaml_file(path)
37
+ return {} unless File.exists?(path)
32
38
  content = File.open(path).read
33
39
  YAML.load(ERB.new(content).result)
34
40
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleConf
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -30,7 +30,7 @@ end
30
30
 
31
31
  class SettingsWithFilename
32
32
  def self.config_file_name
33
- 'settings.yml'
33
+ 'settings'
34
34
  end
35
35
 
36
36
  include SimpleConf
@@ -38,41 +38,42 @@ end
38
38
 
39
39
  describe SimpleConf do
40
40
  context "on include to config class generate properties" do
41
- it { Configuration.staging.domain.should == "staging.example.com" }
41
+ it { Configuration.staging.domain.should eq("staging.example.com") }
42
42
 
43
43
  it "should work properly with collections" do
44
- Configuration.staging.links.should == [
44
+ expect(Configuration.staging.links).to eq([
45
45
  "test1.example.com",
46
- "test2.example.com"
47
- ]
46
+ "test2.example.com",
47
+ ])
48
48
  end
49
49
 
50
- it { Configuration.production.domain.should == "production.example.com" }
50
+ it { expect(Configuration.production.domain).to eq("production.example.com") }
51
51
  end
52
52
 
53
53
  context "on include to options class generate properties with only one key and value" do
54
- it { Options.domain.should == "example.com" }
54
+ it { expect(Options.domain).to eq("example.com") }
55
55
  end
56
56
  end
57
57
 
58
58
  describe SimpleConf do
59
59
  context "on include properties depending on rails environment" do
60
- it { Configuration.domain.should == "staging.example.com" }
60
+ it { expect(Configuration.domain).to eq("staging.example.com") }
61
61
  end
62
62
  end
63
63
 
64
64
  describe SimpleConf do
65
- context 'on include properties depenending on env method' do
66
- Settings.domain.should == 'test.example.com'
65
+ it 'on include properties depenending on env method' do
66
+ expect(Settings.domain).to eq('test.example.com')
67
67
  end
68
68
  end
69
69
 
70
- class TestObject ; end
71
-
72
70
  describe SimpleConf do
71
+ class TestObject ; end
72
+
73
73
  before do
74
+ File.stub(:exists?).and_return(true)
74
75
  file = double('file', :read => attrib('test').to_yaml)
75
- File.stub!(:open).and_return file
76
+ File.stub(:open).and_return(file)
76
77
  end
77
78
 
78
79
  context "when we have env params in the configuration file" do
@@ -86,11 +87,11 @@ describe SimpleConf do
86
87
  before { loader.run }
87
88
 
88
89
  it "should return username" do
89
- TestObject.test.username.should == 'fred'
90
+ expect(TestObject.test.username).to eq('fred')
90
91
  end
91
92
 
92
93
  it "should return password fetched from the environment" do
93
- TestObject.test.password.should == 'password'
94
+ expect(TestObject.test.password).to eq('password')
94
95
  end
95
96
  end
96
97
  end
@@ -107,7 +108,18 @@ end
107
108
 
108
109
  describe SimpleConf do
109
110
  it 'should be possible to use defined name in the settings class for loading the configuration file' do
110
- SettingsWithFilename.test.domain.should == 'test.example.com'
111
+ expect(SettingsWithFilename.test.domain).to eq('test.example.com')
112
+ end
113
+ end
114
+
115
+ class Options2
116
+ include SimpleConf
117
+ end
118
+
119
+ describe SimpleConf do
120
+ it 'supports .local.yml file for loading extra options' do
121
+ expect(Options2).to respond_to(:group1)
122
+ expect(Options2).to respond_to(:group2)
111
123
  end
112
124
  end
113
125
 
data/spec/spec_helper.rb CHANGED
@@ -4,3 +4,11 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
  require 'rubygems'
5
5
  require 'simple-conf'
6
6
 
7
+ RSpec.configure do |config|
8
+ require 'rspec/expectations'
9
+ config.include RSpec::Matchers
10
+
11
+ config.mock_with :rspec
12
+
13
+ config.backtrace_exclusion_patterns = [%r{lib\/rspec\/(core|expectations|matchers|mocks)}]
14
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-conf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Alexander Korsak
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-14 00:00:00.000000000 Z
11
+ date: 2014-06-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -38,6 +35,7 @@ files:
38
35
  - .gitignore
39
36
  - .rspec
40
37
  - .rvmrc
38
+ - .vimrc
41
39
  - Gemfile
42
40
  - Guardfile
43
41
  - LICENSE
@@ -45,6 +43,8 @@ files:
45
43
  - Rakefile
46
44
  - config/configuration.yml
47
45
  - config/options.yml
46
+ - config/options2.local.yml
47
+ - config/options2.yml
48
48
  - config/settings.yml
49
49
  - lib/simple-conf.rb
50
50
  - lib/simple-conf/loader.rb
@@ -55,33 +55,26 @@ files:
55
55
  homepage: http://github.com/oivoodoo/simple-conf/
56
56
  licenses:
57
57
  - MIT
58
+ metadata: {}
58
59
  post_install_message:
59
60
  rdoc_options: []
60
61
  require_paths:
61
62
  - lib
62
63
  required_ruby_version: !ruby/object:Gem::Requirement
63
- none: false
64
64
  requirements:
65
65
  - - ! '>='
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
- segments:
69
- - 0
70
- hash: -847311465064856186
71
68
  required_rubygems_version: !ruby/object:Gem::Requirement
72
- none: false
73
69
  requirements:
74
70
  - - ! '>='
75
71
  - !ruby/object:Gem::Version
76
72
  version: '0'
77
- segments:
78
- - 0
79
- hash: -847311465064856186
80
73
  requirements: []
81
74
  rubyforge_project:
82
- rubygems_version: 1.8.25
75
+ rubygems_version: 2.1.11
83
76
  signing_key:
84
- specification_version: 3
77
+ specification_version: 4
85
78
  summary: Simple configuration library for yml files for loading from the config folder
86
79
  test_files:
87
80
  - spec/simple_conf_spec.rb