endeco 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ script: "bundle exec rspec"
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  https://github.com/morimori/endeco
4
4
 
5
+ [![Build Status](https://secure.travis-ci.org/morimori/endeco.png)](http://travis-ci.org/morimori/endeco)
6
+
5
7
  ## DESCRIPTION
6
8
 
7
9
  Manages environment dependent configurations.
data/lib/endeco.rb CHANGED
@@ -10,18 +10,23 @@ module Endeco
10
10
  end
11
11
 
12
12
  def self.[](key, options = {})
13
- safe_key = key.sub(/!$/, '')
14
- return Cache[safe_key] if Cache.enable and !options[:force] and Cache.key?(safe_key)
15
- fullpath = expand_path safe_key
16
- if File.exists? fullpath
17
- Cache[safe_key] = File.read fullpath
13
+ safe_key = key.sub(/[!\?]$/, '')
14
+ value = if Cache.enable and !options[:force] and Cache.key?(safe_key)
15
+ Cache[safe_key]
18
16
  else
19
- if key == safe_key
20
- nil
17
+ fullpath = expand_path safe_key
18
+ if exists? safe_key
19
+ Cache[safe_key] = File.read fullpath
21
20
  else
22
- raise Errno::ENOENT, "Errno::ENOENT: No such file or directory - #{fullpath}"
21
+ if key == safe_key
22
+ nil
23
+ else
24
+ raise Errno::ENOENT, "Errno::ENOENT: No such file or directory - #{fullpath}"
25
+ end
23
26
  end
24
27
  end
28
+ value.chomp! if value && !(options[:chomp] === false) && Config.default_chomp
29
+ value
25
30
  end
26
31
 
27
32
  private
@@ -29,6 +34,10 @@ module Endeco
29
34
  File.expand_path File.join([Config.path, Config.env, name].compact)
30
35
  end
31
36
 
37
+ def self.exists?(name)
38
+ File.exists? expand_path(name)
39
+ end
40
+
32
41
  def self.def_methods(name)
33
42
  module_eval %[
34
43
  def self.#{name}(options = {})
@@ -41,5 +50,11 @@ module Endeco
41
50
  self[__method__.to_s, options]
42
51
  end
43
52
  ], __FILE__, __LINE__
53
+
54
+ module_eval %[
55
+ def self.#{name}?
56
+ exists? "#{name}"
57
+ end
58
+ ], __FILE__, __LINE__
44
59
  end
45
60
  end
data/lib/endeco/config.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  module Endeco
2
2
  module Config
3
3
  @@path = nil
4
- @@env = nil
5
4
  def self.path
6
5
  @@path
7
6
  end
@@ -10,6 +9,7 @@ module Endeco
10
9
  @@path = new_path
11
10
  end
12
11
 
12
+ @@env = nil
13
13
  def self.env
14
14
  @@env
15
15
  end
@@ -17,5 +17,14 @@ module Endeco
17
17
  def self.env=(new_env)
18
18
  @@env = new_env
19
19
  end
20
+
21
+ @@default_chomp = false
22
+ def self.default_chomp=(new_value)
23
+ @@default_chomp = new_value
24
+ end
25
+
26
+ def self.default_chomp
27
+ @@default_chomp
28
+ end
20
29
  end
21
- end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Endeco
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -12,31 +12,35 @@ describe Endeco do
12
12
  FileUtils.rm_rf File.expand_path(File.join(Endeco::Config.path))
13
13
  end
14
14
 
15
- context 'file exists' do
15
+ shared_context 'file prepared' do
16
16
  before do
17
17
  open File.join(Endeco::Config.path, Endeco::Config.env, 'test_var'), 'w' do |f|
18
- f << 'hoge'
18
+ f << "hoge\n"
19
19
  end
20
20
  end
21
21
 
22
22
  after do
23
23
  File.unlink File.join(Endeco::Config.path, Endeco::Config.env, 'test_var')
24
24
  end
25
+ end
26
+
27
+ context 'file exists' do
28
+ include_context 'file prepared'
25
29
 
26
30
  it 'can read file contents through filename method' do
27
- Endeco.test_var.should == 'hoge'
31
+ Endeco.test_var.should == "hoge\n"
28
32
  end
29
33
 
30
34
  it 'can read file contents through filename method with bang' do
31
- Endeco.test_var!.should == 'hoge'
35
+ Endeco.test_var!.should == "hoge\n"
32
36
  end
33
37
 
34
38
  it 'can read file contents through brace with filename key' do
35
- Endeco['test_var'].should == 'hoge'
39
+ Endeco['test_var'].should == "hoge\n"
36
40
  end
37
41
 
38
42
  it 'can read file contents through brace with filename key with bang' do
39
- Endeco['test_var!'].should == 'hoge'
43
+ Endeco['test_var!'].should == "hoge\n"
40
44
  end
41
45
  end
42
46
 
@@ -46,7 +50,7 @@ describe Endeco do
46
50
  end
47
51
 
48
52
  it 'raise Errno::ENOENT through filename method with bang' do
49
- expect{ Endeco.test_var! }.should raise_error(Errno::ENOENT)
53
+ expect{ Endeco.test_var! }.to raise_error(Errno::ENOENT)
50
54
  end
51
55
 
52
56
  it 'return nil through brace with filename key' do
@@ -54,23 +58,15 @@ describe Endeco do
54
58
  end
55
59
 
56
60
  it 'raise Errno::ENOENT through brace with filename key with bang' do
57
- expect{ Endeco['test_var!'] }.should raise_error(Errno::ENOENT)
61
+ expect{ Endeco['test_var!'] }.to raise_error(Errno::ENOENT)
58
62
  end
59
63
  end
60
64
 
61
65
  context 'cache disable' do
62
- before do
63
- open File.join(Endeco::Config.path, Endeco::Config.env, 'test_var'), 'w' do |f|
64
- f << 'hoge'
65
- end
66
- end
67
-
68
- after do
69
- File.unlink File.join(Endeco::Config.path, Endeco::Config.env, 'test_var')
70
- end
66
+ include_context 'file prepared'
71
67
 
72
68
  it 'read variable is not cached' do
73
- Endeco.test_var!.should == 'hoge'
69
+ Endeco.test_var!.should == "hoge\n"
74
70
  open File.join(Endeco::Config.path, Endeco::Config.env, 'test_var'), 'w' do |f|
75
71
  f << 'fuga'
76
72
  end
@@ -81,29 +77,53 @@ describe Endeco do
81
77
  context 'cache enable' do
82
78
  before do
83
79
  Endeco::Cache.enable = true
84
- open File.join(Endeco::Config.path, Endeco::Config.env, 'test_var'), 'w' do |f|
85
- f << 'hoge'
86
- end
87
80
  end
88
81
 
89
- after do
90
- File.unlink File.join(Endeco::Config.path, Endeco::Config.env, 'test_var')
91
- end
82
+ include_context 'file prepared'
92
83
 
93
84
  it 'read variable is cached' do
94
- Endeco.test_var!.should == 'hoge'
85
+ Endeco.test_var!.should == "hoge\n"
95
86
  open File.join(Endeco::Config.path, Endeco::Config.env, 'test_var'), 'w' do |f|
96
87
  f << 'fuga'
97
88
  end
98
- Endeco.test_var!.should == 'hoge'
89
+ Endeco.test_var!.should == "hoge\n"
99
90
  end
100
91
 
101
92
  it 'force read cached variable with :force option' do
102
- Endeco.test_var!.should == 'hoge'
93
+ Endeco.test_var!.should == "hoge\n"
103
94
  open File.join(Endeco::Config.path, Endeco::Config.env, 'test_var'), 'w' do |f|
104
95
  f << 'fuga'
105
96
  end
106
97
  Endeco.test_var!(:force => true).should == 'fuga'
107
98
  end
108
99
  end
100
+
101
+ context 'enable default chomp' do
102
+ include_context 'file prepared'
103
+
104
+ before do
105
+ Endeco::Config.default_chomp = true
106
+ end
107
+
108
+ it 'remove line feed' do
109
+ Endeco.test_var.should eq 'hoge'
110
+ end
111
+
112
+ it 'disable chomp with option' do
113
+ Endeco.test_var(:chomp => false).should eq "hoge\n"
114
+ end
115
+ end
116
+
117
+ describe '? method' do
118
+ subject { Endeco.test_var? }
119
+
120
+ context 'file exists' do
121
+ include_context 'file prepared'
122
+ it { should be_true }
123
+ end
124
+
125
+ context 'file not exists' do
126
+ it { should be_false }
127
+ end
128
+ end
109
129
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: endeco
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
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-01-17 00:00:00.000000000Z
12
+ date: 2012-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70162604052720 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,12 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70162604052720
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  description: Environment Dependent Configuration
26
31
  email:
27
32
  - hawk@at-exit.com
@@ -31,6 +36,7 @@ extra_rdoc_files: []
31
36
  files:
32
37
  - .gitignore
33
38
  - .rspec
39
+ - .travis.yml
34
40
  - Gemfile
35
41
  - Guardfile
36
42
  - History.txt
@@ -64,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
70
  version: '0'
65
71
  requirements: []
66
72
  rubyforge_project: endeco
67
- rubygems_version: 1.8.15
73
+ rubygems_version: 1.8.24
68
74
  signing_key:
69
75
  specification_version: 3
70
76
  summary: Environment Dependent Configuration