mongoid-app_settings 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -3
- data/Gemfile.lock +14 -16
- data/README.markdown +4 -3
- data/VERSION +1 -1
- data/lib/mongoid-app_settings.rb +25 -13
- data/mongoid-app_settings.gemspec +6 -9
- data/spec/mongoid-app_settings_spec.rb +27 -0
- metadata +18 -29
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -7,8 +7,7 @@ GEM
|
|
7
7
|
i18n (~> 0.6)
|
8
8
|
activesupport (3.1.1)
|
9
9
|
multi_json (~> 1.0)
|
10
|
-
bson (1.
|
11
|
-
bson_ext (1.4.1)
|
10
|
+
bson (1.3.1)
|
12
11
|
builder (3.0.0)
|
13
12
|
database_cleaner (0.6.7)
|
14
13
|
diff-lcs (1.1.3)
|
@@ -18,23 +17,23 @@ GEM
|
|
18
17
|
bundler (~> 1.0)
|
19
18
|
git (>= 1.2.5)
|
20
19
|
rake
|
21
|
-
mongo (1.
|
22
|
-
bson (
|
23
|
-
mongoid (2.3
|
24
|
-
activemodel (~> 3.
|
25
|
-
mongo (~> 1.
|
20
|
+
mongo (1.3.1)
|
21
|
+
bson (>= 1.3.1)
|
22
|
+
mongoid (2.2.3)
|
23
|
+
activemodel (~> 3.0)
|
24
|
+
mongo (~> 1.3)
|
26
25
|
tzinfo (~> 0.3.22)
|
27
26
|
multi_json (1.0.3)
|
28
27
|
rake (0.9.2.2)
|
29
28
|
rcov (0.9.11)
|
30
|
-
rspec (2.
|
31
|
-
rspec-core (~> 2.
|
32
|
-
rspec-expectations (~> 2.
|
33
|
-
rspec-mocks (~> 2.
|
34
|
-
rspec-core (2.
|
35
|
-
rspec-expectations (2.
|
29
|
+
rspec (2.7.0)
|
30
|
+
rspec-core (~> 2.7.0)
|
31
|
+
rspec-expectations (~> 2.7.0)
|
32
|
+
rspec-mocks (~> 2.7.0)
|
33
|
+
rspec-core (2.7.1)
|
34
|
+
rspec-expectations (2.7.0)
|
36
35
|
diff-lcs (~> 1.1.2)
|
37
|
-
rspec-mocks (2.
|
36
|
+
rspec-mocks (2.7.0)
|
38
37
|
tzinfo (0.3.30)
|
39
38
|
|
40
39
|
PLATFORMS
|
@@ -42,9 +41,8 @@ PLATFORMS
|
|
42
41
|
|
43
42
|
DEPENDENCIES
|
44
43
|
activesupport
|
45
|
-
bson_ext (= 1.4.1)
|
46
44
|
database_cleaner
|
47
45
|
jeweler (~> 1.6.4)
|
48
46
|
mongoid
|
49
47
|
rcov
|
50
|
-
rspec
|
48
|
+
rspec
|
data/README.markdown
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# mongoid-app_settings
|
2
2
|
|
3
|
+
[![Build Status](https://secure.travis-ci.org/marten/mongoid-app_settings.png)](http://travis-ci.org/marten/mongoid-app_settings)
|
4
|
+
|
3
5
|
## Usage
|
4
6
|
|
5
7
|
Simply create some class and include `Mongoid::AppSettings`.
|
@@ -34,8 +36,7 @@ Then you can do things like:
|
|
34
36
|
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
35
37
|
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
36
38
|
|
37
|
-
|
39
|
+
## Copyright
|
38
40
|
|
39
|
-
Copyright (c) 2011 Marten Veldthuis. See LICENSE.txt for
|
40
|
-
further details.
|
41
|
+
Copyright (c) 2011 Marten Veldthuis. See LICENSE.txt for further details.
|
41
42
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/mongoid-app_settings.rb
CHANGED
@@ -4,9 +4,13 @@ module Mongoid
|
|
4
4
|
module AppSettings
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
|
+
included do |base|
|
8
|
+
@base = base
|
9
|
+
end
|
10
|
+
|
7
11
|
class Record #:nodoc:
|
8
12
|
include Mongoid::Document
|
9
|
-
identity type
|
13
|
+
identity :type => String
|
10
14
|
store_in :settings
|
11
15
|
end
|
12
16
|
|
@@ -23,6 +27,16 @@ module Mongoid
|
|
23
27
|
# end
|
24
28
|
def setting(name, options = {})
|
25
29
|
settings[name.to_s] = options
|
30
|
+
|
31
|
+
@base.class.class_eval do
|
32
|
+
define_method(name.to_s) do
|
33
|
+
@base[name.to_s]
|
34
|
+
end
|
35
|
+
|
36
|
+
define_method(name.to_s + "=") do |value|
|
37
|
+
@base[name.to_s] = value
|
38
|
+
end
|
39
|
+
end
|
26
40
|
end
|
27
41
|
|
28
42
|
# Force a reload from the database
|
@@ -32,16 +46,6 @@ module Mongoid
|
|
32
46
|
|
33
47
|
protected
|
34
48
|
|
35
|
-
def method_missing(name, *args, &block) # :nodoc:
|
36
|
-
if name.to_s =~ /^(.*)=$/ and setting_defined?($1)
|
37
|
-
self[$1] = args[0]
|
38
|
-
elsif setting_defined?(name.to_s)
|
39
|
-
self[name.to_s]
|
40
|
-
else
|
41
|
-
super
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
49
|
def settings # :nodoc:
|
46
50
|
@settings ||= {}
|
47
51
|
end
|
@@ -52,7 +56,7 @@ module Mongoid
|
|
52
56
|
|
53
57
|
def record # :nodoc:
|
54
58
|
return @record if @record
|
55
|
-
@record = Record.find_or_create_by(id
|
59
|
+
@record = Record.find_or_create_by(:id => "settings")
|
56
60
|
end
|
57
61
|
|
58
62
|
def [](name) # :nodoc:
|
@@ -64,7 +68,15 @@ module Mongoid
|
|
64
68
|
end
|
65
69
|
|
66
70
|
def []=(name, value) # :nodoc:
|
67
|
-
|
71
|
+
if value
|
72
|
+
record.set(name, value)
|
73
|
+
else
|
74
|
+
# FIXME Mongoid's #set doesn't work for false/nil.
|
75
|
+
# Pull request has been submitted, but until then
|
76
|
+
# this workaround is needed.
|
77
|
+
record[name] = value
|
78
|
+
record.save
|
79
|
+
end
|
68
80
|
end
|
69
81
|
end
|
70
82
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "mongoid-app_settings"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Marten Veldthuis"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-12-18"
|
13
13
|
s.description = "Mongoid::AppSettings allows you to store settings in MongoDB, and access them easily"
|
14
14
|
s.email = "marten@veldthuis.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.homepage = "http://github.com/marten/mongoid-app_settings"
|
34
34
|
s.licenses = ["MIT"]
|
35
35
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version = "1.8.
|
36
|
+
s.rubygems_version = "1.8.11"
|
37
37
|
s.summary = "Store settings for your application in MongoDB"
|
38
38
|
|
39
39
|
if s.respond_to? :specification_version then
|
@@ -43,16 +43,14 @@ Gem::Specification.new do |s|
|
|
43
43
|
s.add_runtime_dependency(%q<mongoid>, [">= 0"])
|
44
44
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
45
45
|
s.add_development_dependency(%q<database_cleaner>, [">= 0"])
|
46
|
-
s.add_development_dependency(%q<
|
47
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
46
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
48
47
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
49
48
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
49
|
else
|
51
50
|
s.add_dependency(%q<mongoid>, [">= 0"])
|
52
51
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
53
52
|
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
54
|
-
s.add_dependency(%q<
|
55
|
-
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
53
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
56
54
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
57
55
|
s.add_dependency(%q<rcov>, [">= 0"])
|
58
56
|
end
|
@@ -60,8 +58,7 @@ Gem::Specification.new do |s|
|
|
60
58
|
s.add_dependency(%q<mongoid>, [">= 0"])
|
61
59
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
62
60
|
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
63
|
-
s.add_dependency(%q<
|
64
|
-
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
61
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
65
62
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
66
63
|
s.add_dependency(%q<rcov>, [">= 0"])
|
67
64
|
end
|
@@ -32,12 +32,39 @@ describe "Mongoid::AppSettings" do
|
|
32
32
|
settings.foo.should == "bar"
|
33
33
|
end
|
34
34
|
|
35
|
+
it "should be possible to use defaults of other settings in defaults" do
|
36
|
+
settings.instance_eval { setting :foo, :default => "bar"
|
37
|
+
setting :baz, :default => "#{foo} quux" }
|
38
|
+
settings.baz.should == "bar quux"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be possible to use values of other settings in defaults" do
|
42
|
+
settings.instance_eval { setting :foo, :default => "bar" }
|
43
|
+
settings.foo = "baz"
|
44
|
+
settings.instance_eval { setting :qux, :default => "#{foo} quux" }
|
45
|
+
settings.qux.should === "baz quux"
|
46
|
+
end
|
47
|
+
|
35
48
|
it "should be possible to overwrite a default value" do
|
36
49
|
settings.instance_eval { setting :foo, :default => "bar" }
|
37
50
|
settings.foo = "baz"
|
38
51
|
settings.foo.should == "baz"
|
39
52
|
end
|
40
53
|
|
54
|
+
it "should be possible to overwrite a value with something else" do
|
55
|
+
settings.instance_eval { setting :foo, :default => "bar" }
|
56
|
+
settings.foo = "baz"
|
57
|
+
settings.foo = "quux"
|
58
|
+
settings.foo.should == "quux"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should be possible to overwrite a value with something falsey" do
|
62
|
+
settings.instance_eval { setting :foo, :default => "bar" }
|
63
|
+
settings.foo = "baz"
|
64
|
+
settings.foo = false
|
65
|
+
settings.foo.should == false
|
66
|
+
end
|
67
|
+
|
41
68
|
it "should not constantly reload" do
|
42
69
|
settings.instance_eval { setting :foo }
|
43
70
|
other_settings.instance_eval { setting :foo }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-app_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
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: 2011-
|
12
|
+
date: 2011-12-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &11519520 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11519520
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &11518520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11518520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: database_cleaner
|
38
|
-
requirement: &
|
38
|
+
requirement: &11517440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,32 +43,21 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: bson_ext
|
49
|
-
requirement: &18428000 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - =
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 1.4.1
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *18428000
|
46
|
+
version_requirements: *11517440
|
58
47
|
- !ruby/object:Gem::Dependency
|
59
48
|
name: rspec
|
60
|
-
requirement: &
|
49
|
+
requirement: &11516440 !ruby/object:Gem::Requirement
|
61
50
|
none: false
|
62
51
|
requirements:
|
63
|
-
- -
|
52
|
+
- - ! '>='
|
64
53
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
54
|
+
version: '0'
|
66
55
|
type: :development
|
67
56
|
prerelease: false
|
68
|
-
version_requirements: *
|
57
|
+
version_requirements: *11516440
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: jeweler
|
71
|
-
requirement: &
|
60
|
+
requirement: &11514520 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
63
|
- - ~>
|
@@ -76,10 +65,10 @@ dependencies:
|
|
76
65
|
version: 1.6.4
|
77
66
|
type: :development
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *11514520
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
70
|
name: rcov
|
82
|
-
requirement: &
|
71
|
+
requirement: &11513320 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ! '>='
|
@@ -87,7 +76,7 @@ dependencies:
|
|
87
76
|
version: '0'
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *11513320
|
91
80
|
description: Mongoid::AppSettings allows you to store settings in MongoDB, and access
|
92
81
|
them easily
|
93
82
|
email: marten@veldthuis.com
|
@@ -124,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
113
|
version: '0'
|
125
114
|
segments:
|
126
115
|
- 0
|
127
|
-
hash:
|
116
|
+
hash: 831259488136493402
|
128
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
118
|
none: false
|
130
119
|
requirements:
|
@@ -133,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
122
|
version: '0'
|
134
123
|
requirements: []
|
135
124
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.8.
|
125
|
+
rubygems_version: 1.8.11
|
137
126
|
signing_key:
|
138
127
|
specification_version: 3
|
139
128
|
summary: Store settings for your application in MongoDB
|