Sutto-perennial 0.2.3.0 → 0.2.3.1
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/lib/perennial/core_ext/misc.rb +13 -0
- data/lib/perennial/settings.rb +26 -1
- data/lib/perennial.rb +1 -1
- metadata +4 -3
@@ -84,6 +84,19 @@ class Hash
|
|
84
84
|
self.each_pair { |k,v| hash[k.to_sym] = v }
|
85
85
|
replace hash
|
86
86
|
end
|
87
|
+
|
88
|
+
def stringify_keys!
|
89
|
+
hash = {}
|
90
|
+
self.each_pair { |k, v| hash[k.to_s] = v }
|
91
|
+
replace hash
|
92
|
+
end
|
93
|
+
|
94
|
+
def stringify_keys
|
95
|
+
hash = self.dup
|
96
|
+
hash.stringify_keys!
|
97
|
+
return hash
|
98
|
+
end
|
99
|
+
|
87
100
|
end
|
88
101
|
|
89
102
|
class Module
|
data/lib/perennial/settings.rb
CHANGED
@@ -48,6 +48,14 @@ module Perennial
|
|
48
48
|
setup! if setup?
|
49
49
|
end
|
50
50
|
|
51
|
+
def lookup_key_path
|
52
|
+
@@lookup_key_path ||= ["default"]
|
53
|
+
end
|
54
|
+
|
55
|
+
def lookup_key_path=(value)
|
56
|
+
@@lookup_key_path = value
|
57
|
+
end
|
58
|
+
|
51
59
|
def setup(options = {})
|
52
60
|
self.setup!(options) unless setup?
|
53
61
|
end
|
@@ -57,7 +65,7 @@ module Perennial
|
|
57
65
|
settings_file = self.default_settings_path
|
58
66
|
if File.exist?(settings_file)
|
59
67
|
loaded_yaml = YAML.load(File.read(settings_file))
|
60
|
-
@@configuration.merge!(loaded_yaml
|
68
|
+
@@configuration.merge!(lookup_settings_from(loaded_yaml))
|
61
69
|
end
|
62
70
|
@@configuration.merge! options
|
63
71
|
@@configuration.symbolize_keys!
|
@@ -68,6 +76,17 @@ module Perennial
|
|
68
76
|
@@setup = true
|
69
77
|
end
|
70
78
|
|
79
|
+
def update!(attributes = {})
|
80
|
+
return if attributes.blank?
|
81
|
+
settings_file = self.default_settings_path
|
82
|
+
settings = File.exist?(settings_file) ? YAML.load(File.read(settings_file)) : {}
|
83
|
+
namespaced_settings = lookup_settings_from(settings)
|
84
|
+
namespaced_settings.merge! attributes.stringify_keys
|
85
|
+
File.open(settings_file, "w+") { |f| f.write(settings.to_yaml) }
|
86
|
+
setup!
|
87
|
+
return true
|
88
|
+
end
|
89
|
+
|
71
90
|
def [](key)
|
72
91
|
self.setup
|
73
92
|
return self.configuration[key.to_sym]
|
@@ -98,6 +117,12 @@ module Perennial
|
|
98
117
|
end
|
99
118
|
end
|
100
119
|
|
120
|
+
def lookup_settings_from(settings_hash)
|
121
|
+
lookup_key_path.inject(settings_hash) do |h, k|
|
122
|
+
h[k.to_s] ||= {}
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
101
126
|
end
|
102
127
|
|
103
128
|
end
|
data/lib/perennial.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Sutto-perennial
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.3.
|
4
|
+
version: 0.2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darcy Laycock
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-07 00:00:00 -07:00
|
13
13
|
default_executable: perennial
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- templates/test_helper.erb
|
68
68
|
has_rdoc: false
|
69
69
|
homepage: http://sutto.net/
|
70
|
+
licenses:
|
70
71
|
post_install_message:
|
71
72
|
rdoc_options: []
|
72
73
|
|
@@ -87,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
88
|
requirements: []
|
88
89
|
|
89
90
|
rubyforge_project:
|
90
|
-
rubygems_version: 1.
|
91
|
+
rubygems_version: 1.3.5
|
91
92
|
signing_key:
|
92
93
|
specification_version: 3
|
93
94
|
summary: A simple (generally event-oriented) application library for Ruby
|