timed_config 0.1.0 → 0.1.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/README.md +15 -17
- data/config/gemspec.yml +3 -3
- data/lib/timed_config.rb +19 -16
- data/spec/spec_helper.rb +5 -0
- data/spec/timed_config_spec.rb +22 -4
- metadata +10 -9
- data/spec/fixtures/config.yml +0 -1
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
TimedConfig
|
2
2
|
===========
|
3
3
|
|
4
|
-
|
4
|
+
Load a YAML config every X minutes
|
5
5
|
|
6
6
|
Requirements
|
7
7
|
------------
|
@@ -18,7 +18,7 @@ Install
|
|
18
18
|
#### config/environment.rb
|
19
19
|
|
20
20
|
<pre>
|
21
|
-
config.gem '
|
21
|
+
config.gem 'timed_config'
|
22
22
|
</pre>
|
23
23
|
|
24
24
|
### Rails 3
|
@@ -26,31 +26,22 @@ config.gem 'acts_as_archive'
|
|
26
26
|
#### Gemfile
|
27
27
|
|
28
28
|
<pre>
|
29
|
-
gem '
|
29
|
+
gem 'timed_config'
|
30
30
|
</pre>
|
31
31
|
|
32
32
|
### Other
|
33
33
|
|
34
34
|
<pre>
|
35
|
-
require '
|
35
|
+
require 'timed_config'
|
36
36
|
</pre>
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
<code>TimedConfig</code> will start automatically when you require it.
|
38
|
+
Defaults
|
39
|
+
--------
|
42
40
|
|
43
|
-
If you are using Rails,
|
41
|
+
If you are using Rails, <code>TimedConfig</code> will try to locate the YAML config at <code>config/timed_config.yml</code>.
|
44
42
|
|
45
43
|
By default, the refresh period is set to 1 minute.
|
46
44
|
|
47
|
-
Accessing the config
|
48
|
-
--------------------
|
49
|
-
|
50
|
-
<pre>
|
51
|
-
TimedConfig.config
|
52
|
-
</pre>
|
53
|
-
|
54
45
|
Changing defaults
|
55
46
|
-----------------
|
56
47
|
|
@@ -59,4 +50,11 @@ TimedConfig.period = 120 # change period to two minutes
|
|
59
50
|
TimedConfig.path = "path/to/yaml.yml"
|
60
51
|
</pre>
|
61
52
|
|
62
|
-
The config will reload any time
|
53
|
+
The config will reload any time a setting changes.
|
54
|
+
|
55
|
+
Accessing the config
|
56
|
+
--------------------
|
57
|
+
|
58
|
+
<pre>
|
59
|
+
TimedConfig.config
|
60
|
+
</pre>
|
data/config/gemspec.yml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
name: timed_config
|
2
|
-
version: 0.1.
|
2
|
+
version: 0.1.1
|
3
3
|
authors:
|
4
4
|
- Winton Welsh
|
5
5
|
email: mail@wintoni.us
|
6
6
|
homepage: http://github.com/winton/timed_config
|
7
|
-
summary:
|
8
|
-
description:
|
7
|
+
summary: Load a YAML config every X minutes
|
8
|
+
description: Load a YAML config every X minutes
|
9
9
|
dependencies: null
|
10
10
|
development_dependencies: null
|
data/lib/timed_config.rb
CHANGED
@@ -1,41 +1,44 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
|
3
3
|
module TimedConfig
|
4
|
-
|
5
4
|
class <<self
|
6
|
-
|
5
|
+
|
6
|
+
def config
|
7
|
+
reload
|
8
|
+
end
|
7
9
|
|
8
10
|
def path
|
9
11
|
@path || (defined?(Rails) ? "#{Rails.root}/config/timed_config.yml" : nil)
|
10
12
|
end
|
11
13
|
|
12
14
|
def path=(p)
|
13
|
-
thread.stop rescue nil
|
14
15
|
@path = p
|
15
|
-
|
16
|
+
reload true
|
17
|
+
p
|
16
18
|
end
|
17
19
|
|
18
20
|
def period
|
19
21
|
@period || 60
|
20
22
|
end
|
21
23
|
|
22
|
-
def period=(
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
def period=(p)
|
25
|
+
@period = p
|
26
|
+
reload true
|
27
|
+
p
|
26
28
|
end
|
27
29
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
sleep TimedConfig.period
|
30
|
+
def reload(force=false)
|
31
|
+
if force || !@last_load || Time.now >= (@last_load + period)
|
32
|
+
if TimedConfig.path && File.exists?(TimedConfig.path)
|
33
|
+
@config = YAML::load(File.open(TimedConfig.path))
|
34
|
+
else
|
35
|
+
@config = nil
|
35
36
|
end
|
37
|
+
@last_load = Time.now
|
36
38
|
end
|
39
|
+
@config
|
37
40
|
end
|
38
41
|
|
39
|
-
TimedConfig.
|
42
|
+
TimedConfig.reload
|
40
43
|
end
|
41
44
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/timed_config_spec.rb
CHANGED
@@ -1,17 +1,35 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe TimedConfig do
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
after(:all) do
|
6
|
+
FileUtils.rm "#{$root}/spec/fixtures/config.yml"
|
6
7
|
end
|
7
8
|
|
8
9
|
it "should not have set a config" do
|
9
10
|
TimedConfig.config.should == nil
|
10
11
|
end
|
11
12
|
|
12
|
-
it "should
|
13
|
+
it "should update config when path set" do
|
14
|
+
write_to_fixture "test: test"
|
13
15
|
TimedConfig.path = "#{$root}/spec/fixtures/config.yml"
|
14
|
-
sleep 0.1
|
15
16
|
TimedConfig.config.should == { 'test' => 'test' }
|
16
17
|
end
|
18
|
+
|
19
|
+
it "should update config when period set" do
|
20
|
+
write_to_fixture "test2: test2"
|
21
|
+
TimedConfig.period = 2
|
22
|
+
TimedConfig.config.should == { 'test2' => 'test2' }
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not update config in one second" do
|
26
|
+
write_to_fixture "test3: test3"
|
27
|
+
sleep 1
|
28
|
+
TimedConfig.config.should == { 'test2' => 'test2' }
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should update config in two seconds" do
|
32
|
+
sleep 1
|
33
|
+
TimedConfig.config.should == { 'test3' => 'test3' }
|
34
|
+
end
|
17
35
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timed_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Winton Welsh
|
@@ -14,11 +15,11 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-24 00:00:00 -08:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
21
|
-
description:
|
22
|
+
description: Load a YAML config every X minutes
|
22
23
|
email: mail@wintoni.us
|
23
24
|
executables: []
|
24
25
|
|
@@ -37,7 +38,6 @@ files:
|
|
37
38
|
- lib/timed_config.rb
|
38
39
|
- lib/timed_config/gems.rb
|
39
40
|
- rails/init.rb
|
40
|
-
- spec/fixtures/config.yml
|
41
41
|
- spec/fixtures/gemsets.yml
|
42
42
|
- spec/fixtures/gemspec.yml
|
43
43
|
- spec/spec_helper.rb
|
@@ -58,6 +58,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
61
62
|
segments:
|
62
63
|
- 0
|
63
64
|
version: "0"
|
@@ -66,18 +67,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
67
|
requirements:
|
67
68
|
- - ">="
|
68
69
|
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
69
71
|
segments:
|
70
72
|
- 0
|
71
73
|
version: "0"
|
72
74
|
requirements: []
|
73
75
|
|
74
76
|
rubyforge_project:
|
75
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.4.2
|
76
78
|
signing_key:
|
77
79
|
specification_version: 3
|
78
|
-
summary:
|
80
|
+
summary: Load a YAML config every X minutes
|
79
81
|
test_files:
|
80
|
-
- spec/fixtures/config.yml
|
81
82
|
- spec/fixtures/gemsets.yml
|
82
83
|
- spec/fixtures/gemspec.yml
|
83
84
|
- spec/spec_helper.rb
|
data/spec/fixtures/config.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
test: test
|