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 CHANGED
@@ -5,8 +5,7 @@ gem "activesupport"
5
5
 
6
6
  group :development do
7
7
  gem "database_cleaner"
8
- gem "bson_ext", "1.4.1"
9
- gem "rspec", "~> 2.3.0"
8
+ gem "rspec"
10
9
  gem "jeweler", "~> 1.6.4"
11
- gem "rcov", ">= 0"
10
+ gem "rcov"
12
11
  end
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.4.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.4.1)
22
- bson (= 1.4.1)
23
- mongoid (2.3.2)
24
- activemodel (~> 3.1)
25
- mongo (~> 1.4)
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.3.0)
31
- rspec-core (~> 2.3.0)
32
- rspec-expectations (~> 2.3.0)
33
- rspec-mocks (~> 2.3.0)
34
- rspec-core (2.3.1)
35
- rspec-expectations (2.3.0)
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.3.0)
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 (~> 2.3.0)
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
- == Copyright
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
1
+ 0.0.2
@@ -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: String
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: "settings")
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
- record.set(name, value)
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.1"
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-10-26"
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.10"
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<bson_ext>, ["= 1.4.1"])
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<bson_ext>, ["= 1.4.1"])
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<bson_ext>, ["= 1.4.1"])
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.1
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-10-26 00:00:00.000000000Z
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: &18436980 !ruby/object:Gem::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: *18436980
24
+ version_requirements: *11519520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &18433280 !ruby/object:Gem::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: *18433280
35
+ version_requirements: *11518520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: database_cleaner
38
- requirement: &18429820 !ruby/object:Gem::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: *18429820
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: &18426040 !ruby/object:Gem::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: 2.3.0
54
+ version: '0'
66
55
  type: :development
67
56
  prerelease: false
68
- version_requirements: *18426040
57
+ version_requirements: *11516440
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: jeweler
71
- requirement: &18328300 !ruby/object:Gem::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: *18328300
68
+ version_requirements: *11514520
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: rcov
82
- requirement: &18327440 !ruby/object:Gem::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: *18327440
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: -2074041831265364692
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.10
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