Skip to content

Commit 6be535a

Browse files
committed
Merge pull request #40 from craigmarksmith/master
Handle empty yaml files.
2 parents 4884d45 + 2e1a1cd commit 6be535a

File tree

5 files changed

+10
-1
lines changed

5 files changed

+10
-1
lines changed

lib/settingslogic.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ def initialize(hash_or_file = self.class.source, section = nil)
111111
when Hash
112112
self.replace hash_or_file
113113
else
114-
hash = YAML.load(ERB.new(open(hash_or_file).read).result).to_hash
114+
file_contents = open(hash_or_file).read
115+
hash = file_contents.empty? ? {} : YAML.load(ERB.new(file_contents).result).to_hash
115116
if self.class.namespace
116117
hash = hash[self.class.namespace] or return missing_key("Missing setting '#{self.class.namespace}' in #{hash_or_file}")
117118
end

spec/settings_empty.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class SettingsEmpty < Settingslogic
2+
source "#{File.dirname(__FILE__)}/settings_empty.yml"
3+
end

spec/settings_empty.yml

Whitespace-only changes.

spec/settingslogic_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ class NoSource < Settingslogic; end
153153
Settings.name.should == 'test'
154154
end
155155

156+
it "should handle empty file" do
157+
SettingsEmpty.keys.should eql([])
158+
end
159+
156160
# Put this test last or else call to .instance will load @instance,
157161
# masking bugs.
158162
it "should be a hash" do

spec/spec_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require 'settings2'
77
require 'settings3'
88
require 'settings4'
9+
require 'settings_empty'
910

1011
# Needed to test Settings3
1112
Object.send :define_method, 'collides' do

0 commit comments

Comments
 (0)