surveillance_authority 0.1.0 → 0.2.0
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 +7 -5
- data/VERSION +1 -1
- data/lib/surveillance_authority.rb +13 -1
- data/spec/plugin_configuration_spec.rb +21 -3
- data/surveillance_authority.gemspec +2 -2
- metadata +4 -4
data/README.md
CHANGED
@@ -103,9 +103,10 @@ Withing your plugin, you will be able to access your options simply by calling `
|
|
103
103
|
|
104
104
|
#### Example: `VarnishSweep` needs to be configured with a base url to varnish
|
105
105
|
|
106
|
-
<code>
|
107
106
|
|
108
107
|
class VarnishSweeper < SurveillanceAuthority::Sanctions
|
108
|
+
default_config {:method => :purge}
|
109
|
+
|
109
110
|
def sweep(url, options = {})
|
110
111
|
options.reverse_merge(
|
111
112
|
:method => :invalidate
|
@@ -128,21 +129,22 @@ Withing your plugin, you will be able to access your options simply by calling `
|
|
128
129
|
end
|
129
130
|
end
|
130
131
|
|
131
|
-
</code>
|
132
132
|
|
133
133
|
In the project using this plugin:
|
134
134
|
|
135
|
-
<code>
|
136
135
|
|
137
136
|
SurveillanceAuthority.config(VarnishSweeper, :base_url => "http://varnish.example.com")
|
138
|
-
|
139
137
|
...
|
140
|
-
</code>
|
141
138
|
|
142
139
|
If you want to access the config of other plugins, use:
|
143
140
|
|
144
141
|
`SurveillanceAuthority.config_for(<plugin>)`
|
145
142
|
|
143
|
+
Note that you can easily provide default options for your plugin by calling `default_config` in your plugin file:
|
144
|
+
|
145
|
+
default_config {:method => :purge}
|
146
|
+
|
147
|
+
which comes in handy if some config options of your plugin do not need to be set by the users.
|
146
148
|
|
147
149
|
|
148
150
|
Copyright
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -4,9 +4,21 @@ require 'singleton'
|
|
4
4
|
class SurveillanceAuthority
|
5
5
|
|
6
6
|
class Sanction
|
7
|
-
attr_accessor :config
|
8
7
|
include Singleton
|
9
8
|
|
9
|
+
def self.default_config(options = {})
|
10
|
+
self.instance.config = options
|
11
|
+
end
|
12
|
+
|
13
|
+
def config=(options = {})
|
14
|
+
@config ||= {}
|
15
|
+
@config = @config.merge(options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def config
|
19
|
+
@config ||= {}
|
20
|
+
end
|
21
|
+
|
10
22
|
VALID_HOOKS = [:validation, :validation_on_create, :save, :create]
|
11
23
|
@@plugins = []
|
12
24
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
3
|
class Notify < SurveillanceAuthority::Sanction
|
4
|
+
default_config(:default_config => "I am a default option")
|
5
|
+
|
4
6
|
def my_config
|
5
7
|
config
|
6
8
|
end
|
@@ -16,18 +18,34 @@ describe "plugin configuration" do
|
|
16
18
|
it "should be possible to configure plugins with the SurveillanceAuthority.config method" do
|
17
19
|
SurveillanceAuthority.config(Notify, :option1 => true)
|
18
20
|
|
19
|
-
Notify.instance.config.should ==
|
21
|
+
Notify.instance.config[:option1].should == true
|
20
22
|
end
|
21
23
|
|
22
24
|
it "configuration should be accessible within the plugin" do
|
23
25
|
SurveillanceAuthority.config(Notify, :option2 => true)
|
24
26
|
|
25
|
-
Notify.instance.my_config.should ==
|
27
|
+
Notify.instance.my_config[:option2].should == true
|
26
28
|
end
|
27
29
|
|
28
30
|
it "should be possible to configure plugins with the SurveillanceAuthority.config method and retrieve this config with SurveillanceAuthority::config_for" do
|
29
31
|
SurveillanceAuthority.config(Notify, :option3 => true)
|
30
32
|
|
31
|
-
SurveillanceAuthority.config_for(Notify).should ==
|
33
|
+
SurveillanceAuthority.config_for(Notify)[:option3].should == true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be possible for plugins to have default options" do
|
37
|
+
Notify.instance.config[:default_config].should == "I am a default option"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should not delete default config if user sets some config options" do
|
41
|
+
SurveillanceAuthority.config(Notify, :what => "ever")
|
42
|
+
Notify.instance.config[:default_config].should == "I am a default option"
|
43
|
+
end
|
44
|
+
|
45
|
+
# ALWAYS LAST:
|
46
|
+
it "should be possible for plugins to overwrite default options" do
|
47
|
+
SurveillanceAuthority.config(Notify, :default_config => "I am not a default option")
|
48
|
+
Notify.instance.config[:default_config].should == "I am not a default option"
|
32
49
|
end
|
50
|
+
|
33
51
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{surveillance_authority}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Bornkessel"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-25}
|
13
13
|
s.description = %q{Write centralized model observers in a simple DSL}
|
14
14
|
s.email = %q{github@bornkessel.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Daniel Bornkessel
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-25 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -252,7 +252,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
252
|
requirements:
|
253
253
|
- - ">="
|
254
254
|
- !ruby/object:Gem::Version
|
255
|
-
hash:
|
255
|
+
hash: -2654120252079229652
|
256
256
|
segments:
|
257
257
|
- 0
|
258
258
|
version: "0"
|