mongo_mapper-strict_keys 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/.gitignore +4 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/Rakefile +14 -0
- data/lib/mongo_mapper/strict_keys/version.rb +7 -0
- data/lib/mongo_mapper/strict_keys.rb +23 -0
- data/lib/mongo_mapper-strict_keys.rb +1 -0
- data/mongo_mapper-strict_keys.gemspec +25 -0
- data/spec/mongo_mapper/strict_keys_spec.rb +50 -0
- data/spec/spec_helper.rb +9 -0
- metadata +143 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-cfs
|
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
require 'rspec'
|
4
|
+
require 'rspec/core'
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
|
7
|
+
task :release => :spec
|
8
|
+
|
9
|
+
desc "Run Specs"
|
10
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
11
|
+
spec.pattern = "spec/**/*_spec.rb"
|
12
|
+
spec.verbose = true
|
13
|
+
spec.rspec_opts = ['--color']
|
14
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'mongo_mapper'
|
2
|
+
require 'mongo_mapper/plugins'
|
3
|
+
require 'mongo_mapper/strict_keys/version'
|
4
|
+
|
5
|
+
module MongoMapper
|
6
|
+
module Plugins
|
7
|
+
module StrictKeys
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
module ClassMethods; end
|
11
|
+
|
12
|
+
module InstanceMethods
|
13
|
+
def ensure_key_exists(name)
|
14
|
+
# Do nothing.
|
15
|
+
unless respond_to?("#{name}=")
|
16
|
+
raise ArgumentError.new("Attribute #{name} has not been explicitly defined as a key.")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'mongo_mapper/strict_keys'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "mongo_mapper/strict_keys/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "mongo_mapper-strict_keys"
|
7
|
+
s.version = MongoMapper::Plugins::StrictKeys::VERSION
|
8
|
+
s.authors = ["Scott Gonyea"]
|
9
|
+
s.email = ["me@sgonyea.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Mongo Mapper Strict Keys Plugin}
|
12
|
+
s.description = %q{Mongo Mapper Strict Keys Plugin.}
|
13
|
+
|
14
|
+
s.add_dependency 'mongo_mapper'
|
15
|
+
s.add_dependency 'activesupport'
|
16
|
+
s.add_dependency 'i18n'
|
17
|
+
|
18
|
+
s.add_development_dependency 'rspec', '~>2.6.0'
|
19
|
+
s.add_development_dependency 'bson_ext', '~>1.3.1'
|
20
|
+
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
|
+
s.require_paths = ["lib"]
|
25
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require File.expand_path("../spec_helper", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe MongoMapper::Plugins::StrictKeys do
|
4
|
+
|
5
|
+
class SimpleModel
|
6
|
+
include MongoMapper::Document
|
7
|
+
include MongoMapper::Plugins::StrictKeys
|
8
|
+
|
9
|
+
key :string_key, String
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'Instance attributes' do
|
13
|
+
before(:each) do
|
14
|
+
@sm = SimpleModel.new
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'attributes-as-methods' do
|
18
|
+
it 'should accept attributes-as-methods for pre-defined keys' do
|
19
|
+
lambda {
|
20
|
+
@sm.string_key = "I work!"
|
21
|
+
}.should_not raise_error
|
22
|
+
|
23
|
+
@sm.string_key.should == "I work!"
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should reject attributes-as-methods for never-defined keys' do
|
27
|
+
lambda {
|
28
|
+
@sm.not_defined = 'blowed up'
|
29
|
+
}.should raise_error(NoMethodError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'attributes-in-brackets' do
|
34
|
+
it 'should accept attributes-in-brackets for pre-defined keys' do
|
35
|
+
lambda {
|
36
|
+
@sm[:string_key] = "I work!"
|
37
|
+
}.should_not raise_error
|
38
|
+
|
39
|
+
@sm[:string_key].should == "I work!"
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should reject attributes-in-brackets for never-defined keys' do
|
43
|
+
lambda {
|
44
|
+
@sm[:not_defined] = 'blowed up'
|
45
|
+
}.should raise_error(ArgumentError)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
|
3
|
+
Bundler.require :development
|
4
|
+
Bundler.require :default
|
5
|
+
|
6
|
+
MongoMapper.connection = ::Mongo::ReplSetConnection.new(["localhost", 27017])
|
7
|
+
MongoMapper.database = 'mongo_mapper-strict_keys-test'
|
8
|
+
|
9
|
+
Dir[ Bundler.root.join("spec/support/**/*.rb") ].each{|f| require f}
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mongo_mapper-strict_keys
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Scott Gonyea
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-06-07 00:00:00 -07:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: mongo_mapper
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: activesupport
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: i18n
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id003
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rspec
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 2
|
69
|
+
- 6
|
70
|
+
- 0
|
71
|
+
version: 2.6.0
|
72
|
+
type: :development
|
73
|
+
version_requirements: *id004
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: bson_ext
|
76
|
+
prerelease: false
|
77
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
segments:
|
83
|
+
- 1
|
84
|
+
- 3
|
85
|
+
- 1
|
86
|
+
version: 1.3.1
|
87
|
+
type: :development
|
88
|
+
version_requirements: *id005
|
89
|
+
description: Mongo Mapper Strict Keys Plugin.
|
90
|
+
email:
|
91
|
+
- me@sgonyea.com
|
92
|
+
executables: []
|
93
|
+
|
94
|
+
extensions: []
|
95
|
+
|
96
|
+
extra_rdoc_files: []
|
97
|
+
|
98
|
+
files:
|
99
|
+
- .gitignore
|
100
|
+
- .rspec
|
101
|
+
- Gemfile
|
102
|
+
- Rakefile
|
103
|
+
- lib/mongo_mapper-strict_keys.rb
|
104
|
+
- lib/mongo_mapper/strict_keys.rb
|
105
|
+
- lib/mongo_mapper/strict_keys/version.rb
|
106
|
+
- mongo_mapper-strict_keys.gemspec
|
107
|
+
- spec/mongo_mapper/strict_keys_spec.rb
|
108
|
+
- spec/spec_helper.rb
|
109
|
+
has_rdoc: true
|
110
|
+
homepage: ""
|
111
|
+
licenses: []
|
112
|
+
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
segments:
|
124
|
+
- 0
|
125
|
+
version: "0"
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
segments:
|
132
|
+
- 0
|
133
|
+
version: "0"
|
134
|
+
requirements: []
|
135
|
+
|
136
|
+
rubyforge_project:
|
137
|
+
rubygems_version: 1.3.7
|
138
|
+
signing_key:
|
139
|
+
specification_version: 3
|
140
|
+
summary: Mongo Mapper Strict Keys Plugin
|
141
|
+
test_files:
|
142
|
+
- spec/mongo_mapper/strict_keys_spec.rb
|
143
|
+
- spec/spec_helper.rb
|