mongoid-app_settings 0.0.0 → 0.0.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.markdown +2 -1
- data/VERSION +1 -1
- data/lib/mongoid-app_settings.rb +39 -17
- data/mongoid-app_settings.gemspec +69 -0
- data/spec/mongoid-app_settings_spec.rb +32 -7
- metadata +18 -17
data/README.markdown
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/lib/mongoid-app_settings.rb
CHANGED
@@ -4,46 +4,68 @@ module Mongoid
|
|
4
4
|
module AppSettings
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
|
-
class Record
|
7
|
+
class Record #:nodoc:
|
8
8
|
include Mongoid::Document
|
9
9
|
identity type: String
|
10
|
+
store_in :settings
|
10
11
|
end
|
11
12
|
|
12
13
|
module ClassMethods
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
# Defines a setting. Options can include:
|
15
|
+
#
|
16
|
+
# * default -- Specify a default value
|
17
|
+
#
|
18
|
+
# Example usage:
|
19
|
+
#
|
20
|
+
# class MySettings
|
21
|
+
# include Mongoid::AppSettings
|
22
|
+
# setting :organization_name, :default => "demo"
|
23
|
+
# end
|
24
|
+
def setting(name, options = {})
|
25
|
+
settings[name.to_s] = options
|
26
|
+
end
|
27
|
+
|
28
|
+
# Force a reload from the database
|
29
|
+
def reload
|
30
|
+
@record = nil
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
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]
|
16
40
|
else
|
17
|
-
|
41
|
+
super
|
18
42
|
end
|
19
43
|
end
|
20
44
|
|
21
|
-
def
|
22
|
-
@
|
45
|
+
def settings # :nodoc:
|
46
|
+
@settings ||= {}
|
23
47
|
end
|
24
48
|
|
25
|
-
def
|
26
|
-
|
49
|
+
def setting_defined?(name) # :nodoc:
|
50
|
+
settings.include?(name)
|
27
51
|
end
|
28
|
-
|
29
|
-
def record
|
52
|
+
|
53
|
+
def record # :nodoc:
|
30
54
|
return @record if @record
|
31
55
|
@record = Record.find_or_create_by(id: "settings")
|
32
56
|
end
|
33
57
|
|
34
|
-
def
|
58
|
+
def [](name) # :nodoc:
|
35
59
|
if record.attributes.include?(name)
|
36
60
|
record.read_attribute(name)
|
37
61
|
else
|
38
|
-
|
62
|
+
settings[name][:default]
|
39
63
|
end
|
40
64
|
end
|
41
65
|
|
42
|
-
def
|
43
|
-
record.
|
44
|
-
record.save
|
66
|
+
def []=(name, value) # :nodoc:
|
67
|
+
record.set(name, value)
|
45
68
|
end
|
46
69
|
end
|
47
|
-
|
48
70
|
end
|
49
71
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "mongoid-app_settings"
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Marten Veldthuis"]
|
12
|
+
s.date = "2011-10-26"
|
13
|
+
s.description = "Mongoid::AppSettings allows you to store settings in MongoDB, and access them easily"
|
14
|
+
s.email = "marten@veldthuis.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.markdown"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rspec",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.markdown",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"lib/mongoid-app_settings.rb",
|
29
|
+
"mongoid-app_settings.gemspec",
|
30
|
+
"spec/mongoid-app_settings_spec.rb",
|
31
|
+
"spec/spec_helper.rb"
|
32
|
+
]
|
33
|
+
s.homepage = "http://github.com/marten/mongoid-app_settings"
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = "1.8.10"
|
37
|
+
s.summary = "Store settings for your application in MongoDB"
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
s.specification_version = 3
|
41
|
+
|
42
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_runtime_dependency(%q<mongoid>, [">= 0"])
|
44
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
45
|
+
s.add_development_dependency(%q<database_cleaner>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<bson_ext>, ["= 1.4.1"])
|
47
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
49
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<mongoid>, [">= 0"])
|
52
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
53
|
+
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
54
|
+
s.add_dependency(%q<bson_ext>, ["= 1.4.1"])
|
55
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
56
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
57
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
58
|
+
end
|
59
|
+
else
|
60
|
+
s.add_dependency(%q<mongoid>, [">= 0"])
|
61
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
62
|
+
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
63
|
+
s.add_dependency(%q<bson_ext>, ["= 1.4.1"])
|
64
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
65
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
66
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
@@ -7,28 +7,53 @@ describe "Mongoid::AppSettings" do
|
|
7
7
|
settings
|
8
8
|
end
|
9
9
|
|
10
|
+
let(:other_settings) do
|
11
|
+
other_settings = Class.new
|
12
|
+
other_settings.instance_eval { include Mongoid::AppSettings }
|
13
|
+
other_settings
|
14
|
+
end
|
15
|
+
|
10
16
|
it "should be possible to save a setting" do
|
17
|
+
settings.instance_eval { setting :something }
|
11
18
|
settings.something = "some nice value"
|
12
19
|
settings.something.should == "some nice value"
|
13
20
|
end
|
14
21
|
|
15
22
|
it "should save settings outside of itself" do
|
23
|
+
settings.instance_eval { setting :something }
|
24
|
+
other_settings.instance_eval { setting :something }
|
25
|
+
|
16
26
|
settings.something = "some nice value"
|
17
|
-
|
18
|
-
fresh_settings.instance_eval { include Mongoid::AppSettings }
|
19
|
-
fresh_settings.something.should == "some nice value"
|
27
|
+
other_settings.something.should == "some nice value"
|
20
28
|
end
|
21
29
|
|
22
30
|
it "should be possible to specify default values" do
|
23
|
-
settings.instance_eval
|
24
|
-
default :foo, "bar"
|
25
|
-
end
|
31
|
+
settings.instance_eval { setting :foo, :default => "bar" }
|
26
32
|
settings.foo.should == "bar"
|
27
33
|
end
|
28
34
|
|
29
35
|
it "should be possible to overwrite a default value" do
|
30
|
-
settings.instance_eval {
|
36
|
+
settings.instance_eval { setting :foo, :default => "bar" }
|
31
37
|
settings.foo = "baz"
|
32
38
|
settings.foo.should == "baz"
|
33
39
|
end
|
40
|
+
|
41
|
+
it "should not constantly reload" do
|
42
|
+
settings.instance_eval { setting :foo }
|
43
|
+
other_settings.instance_eval { setting :foo }
|
44
|
+
other_settings.foo # force other_settings to load the record
|
45
|
+
|
46
|
+
settings.foo = "bar"
|
47
|
+
other_settings.foo.should be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should be possible to reload" do
|
51
|
+
settings.instance_eval { setting :foo }
|
52
|
+
other_settings.instance_eval { setting :foo }
|
53
|
+
other_settings.foo # force other_settings to load the record
|
54
|
+
|
55
|
+
settings.foo = "bar"
|
56
|
+
other_settings.reload
|
57
|
+
other_settings.foo.should == "bar"
|
58
|
+
end
|
34
59
|
end
|
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.1
|
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-10-
|
12
|
+
date: 2011-10-26 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement: &
|
16
|
+
requirement: &18436980 !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: *18436980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &18433280 !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: *18433280
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: database_cleaner
|
38
|
-
requirement: &
|
38
|
+
requirement: &18429820 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *18429820
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bson_ext
|
49
|
-
requirement: &
|
49
|
+
requirement: &18428000 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - =
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.4.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *18428000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &18426040 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 2.3.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *18426040
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &18328300 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.6.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *18328300
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rcov
|
82
|
-
requirement: &
|
82
|
+
requirement: &18327440 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *18327440
|
91
91
|
description: Mongoid::AppSettings allows you to store settings in MongoDB, and access
|
92
92
|
them easily
|
93
93
|
email: marten@veldthuis.com
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- Rakefile
|
107
107
|
- VERSION
|
108
108
|
- lib/mongoid-app_settings.rb
|
109
|
+
- mongoid-app_settings.gemspec
|
109
110
|
- spec/mongoid-app_settings_spec.rb
|
110
111
|
- spec/spec_helper.rb
|
111
112
|
homepage: http://github.com/marten/mongoid-app_settings
|
@@ -123,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
124
|
version: '0'
|
124
125
|
segments:
|
125
126
|
- 0
|
126
|
-
hash:
|
127
|
+
hash: -2074041831265364692
|
127
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
129
|
none: false
|
129
130
|
requirements:
|