mongomodel 0.5.0 → 0.5.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d20a72c67b166e32f7b15d679f2be9da9e4aeb9a
4
+ data.tar.gz: 579a68306b9f69d20e6b18fd1c39dde098a66d50
5
+ SHA512:
6
+ metadata.gz: 4d9493996ffb93bbb4fdb1c26ab3e4ac7311f10b97f10b7873fb443c4624c0972fc536bafae0a3e31e2049a573e612167cbc8c9fdea27f6f05c0808137624523
7
+ data.tar.gz: b4560d5934a94b17c14505838d2cfded8cdd5bdeb9d54ec000b7f360760b108e043d3d259c1e56133b9b94bf5809e2ceaf2f5bfc104f58349005215cd68b4fc0
@@ -7,11 +7,13 @@ rvm:
7
7
  - 1.8.7
8
8
  - 1.9.3
9
9
  - 2.0.0
10
+ - 2.1.0
10
11
 
11
12
  gemfile:
12
13
  - gemfiles/rails-3.1.gemfile
13
14
  - gemfiles/rails-3.2.gemfile
14
- - gemfiles/rails-4.gemfile
15
+ - gemfiles/rails-4.0.gemfile
16
+ - gemfiles/rails-4.1.gemfile
15
17
  - gemfiles/rails-4-observers.gemfile
16
18
  - gemfiles/rails-4-protected-attributes.gemfile
17
19
  - gemfiles/mongo_mapper.gemfile
@@ -20,7 +22,9 @@ gemfile:
20
22
  matrix:
21
23
  exclude:
22
24
  - rvm: 1.8.7
23
- gemfile: gemfiles/rails-4.gemfile
25
+ gemfile: gemfiles/rails-4.0.gemfile
26
+ - rvm: 1.8.7
27
+ gemfile: gemfiles/rails-4.1.gemfile
24
28
  - rvm: 1.8.7
25
29
  gemfile: gemfiles/rails-4-observers.gemfile
26
30
  - rvm: 1.8.7
@@ -1,7 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "activesupport", "3.2.13"
4
- gem "activemodel", "3.2.13"
3
+ gem "activesupport", "3.2.17"
4
+ gem "activemodel", "3.2.17"
5
5
 
6
6
  gem "bson_ext", "~> 1.8"
7
7
  gem "tzinfo"
@@ -0,0 +1,10 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activesupport", "4.0.3"
4
+ gem "activemodel", "4.0.3"
5
+
6
+ gem "bson_ext", "~> 1.8"
7
+ gem "tzinfo"
8
+ gem "rake"
9
+
10
+ gemspec :path => "../"
@@ -0,0 +1,10 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activesupport", :github => "rails/rails", :branch => "4-1-stable"
4
+ gem "activemodel", :github => "rails/rails", :branch => "4-1-stable"
5
+
6
+ gem "bson_ext", "~> 1.8"
7
+ gem "tzinfo"
8
+ gem "rake"
9
+
10
+ gemspec :path => "../"
@@ -199,34 +199,16 @@ module MongoModel
199
199
  :after_create, :before_update, :around_update, :after_update,
200
200
  :before_destroy, :around_destroy, :after_destroy
201
201
  ]
202
-
202
+
203
+ module ClassMethods
204
+ include ActiveModel::Callbacks
205
+ end
206
+
203
207
  included do
204
- extend ActiveModel::Callbacks
208
+ include ActiveModel::Validations::Callbacks
205
209
 
206
210
  define_model_callbacks :initialize, :find, :only => :after
207
211
  define_model_callbacks :save, :create, :update, :destroy
208
-
209
- define_callbacks :validation, :terminator => "result == false", :scope => [:kind, :name]
210
- end
211
-
212
- module ClassMethods
213
- def before_validation(*args, &block)
214
- options = args.extract_options!
215
- if options[:on]
216
- options[:if] = Array.wrap(options[:if])
217
- options[:if] << "@_on_validate == :#{options[:on]}"
218
- end
219
- set_callback(:validation, :before, *(args << options), &block)
220
- end
221
-
222
- def after_validation(*args, &block)
223
- options = args.extract_options!
224
- options[:if] = Array.wrap(options[:if])
225
- options[:if] << "!halted && value != false"
226
- options[:if] << "@_on_validate == :#{options[:on]}" if options[:on]
227
- options[:prepend] = true
228
- set_callback(:validation, :after, *(args << options), &block)
229
- end
230
212
  end
231
213
 
232
214
  def initialize(*args, &block) #:nodoc:
@@ -234,11 +216,6 @@ module MongoModel
234
216
  run_callbacks_with_embedded(:initialize)
235
217
  end
236
218
 
237
- def valid?(*) #:nodoc:
238
- @_on_validate = new_record? ? :create : :update
239
- run_callbacks(:validation) { super }
240
- end
241
-
242
219
  def run_callbacks_with_embedded(kind, *args, &block)
243
220
  if block_given?
244
221
  embedded_callbacks = nest_embedded_callbacks(kind, *args, &block)
@@ -5,25 +5,14 @@ module MongoModel
5
5
  module Validations
6
6
  class UniquenessValidator < ActiveModel::EachValidator
7
7
  def initialize(options)
8
- super(options.reverse_merge(:case_sensitive => true))
8
+ options = options.reverse_merge(:case_sensitive => true)
9
+
10
+ ActiveSupport::Deprecation.silence { super }
11
+ setup!(options[:class]) if options[:class] && !@klass
9
12
  end
10
13
 
11
14
  def setup(klass)
12
- @klass = klass
13
-
14
- # Enable safety checks on save
15
- klass.save_safely = true
16
-
17
- # Create unique indexes to deal with race condition
18
- attributes.each do |attr_name|
19
- if options[:case_sensitive]
20
- klass.index *[attr_name] + Array.wrap(options[:scope]) << { :unique => true }
21
- else
22
- lowercase_key = "_lowercase_#{attr_name}"
23
- klass.before_save { attributes[lowercase_key] = send(attr_name).downcase }
24
- klass.index *[lowercase_key] + Array.wrap(options[:scope]) << { :unique => true }
25
- end
26
- end
15
+ setup!(klass)
27
16
  end
28
17
 
29
18
  def validate_each(record, attribute, value)
@@ -48,7 +37,24 @@ module MongoModel
48
37
  end
49
38
 
50
39
  private
51
-
40
+ def setup!(klass)
41
+ @klass = klass
42
+
43
+ # Enable safety checks on save
44
+ klass.save_safely = true
45
+
46
+ # Create unique indexes to deal with race condition
47
+ attributes.each do |attr_name|
48
+ if options[:case_sensitive]
49
+ klass.index *[attr_name] + Array.wrap(options[:scope]) << { :unique => true }
50
+ else
51
+ lowercase_key = "_lowercase_#{attr_name}"
52
+ klass.before_save { attributes[lowercase_key] = send(attr_name).downcase }
53
+ klass.index *[lowercase_key] + Array.wrap(options[:scope]) << { :unique => true }
54
+ end
55
+ end
56
+ end
57
+
52
58
  # The check for an existing value should be run from a class that
53
59
  # isn't abstract. This means working down from the current class
54
60
  # (self), to the first non-abstract class. Since classes don't know
@@ -1,3 +1,3 @@
1
1
  module MongoModel
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -5,6 +5,7 @@ Gem::Specification.new do |s|
5
5
  s.name = "mongomodel"
6
6
  s.version = MongoModel::VERSION
7
7
  s.platform = Gem::Platform::RUBY
8
+ s.licenses = ["MIT"]
8
9
  s.authors = ["Sam Pohlenz"]
9
10
  s.email = ["sam@sampohlenz.com"]
10
11
  s.homepage = "http://www.mongomodel.org"
@@ -18,9 +19,9 @@ Gem::Specification.new do |s|
18
19
  s.add_dependency "activemodel", ">= 3.1"
19
20
  s.add_dependency "mongo", "~> 1.8"
20
21
 
21
- s.add_development_dependency "bundler", ">= 1.0.0"
22
- s.add_development_dependency "rspec", "~> 2.8"
23
- s.add_development_dependency "guard-rspec", "~> 0.5.0"
22
+ s.add_development_dependency "bundler", ">= 1.0"
23
+ s.add_development_dependency "rspec", "~> 2.8"
24
+ s.add_development_dependency "minitest", ">= 4.2"
24
25
 
25
26
  s.files = `git ls-files`.split("\n")
26
27
  s.require_path = 'lib'
@@ -3,8 +3,16 @@ require 'spec_helper'
3
3
  module MongoModel
4
4
  specs_for(Document, EmbeddedDocument) do
5
5
  shared_examples_for "ActiveModel" do
6
- require 'test/unit/assertions'
7
- include Test::Unit::Assertions
6
+ begin
7
+ require 'minitest/assertions'
8
+ rescue LoadError
9
+ require 'minitest/unit'
10
+ end
11
+
12
+ include Minitest::Assertions
13
+
14
+ attr_accessor :assertions
15
+ before(:all) { self.assertions = 0 }
8
16
 
9
17
  include ActiveModel::Lint::Tests
10
18
 
@@ -36,7 +36,7 @@ module MongoModel
36
36
  end
37
37
 
38
38
  context "on a class with an included concern that defines the property" do
39
- module TestConcern
39
+ define_module(:TestConcern) do
40
40
  extend ActiveSupport::Concern
41
41
 
42
42
  included do
@@ -12,6 +12,12 @@ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
12
12
  require 'active_support/time'
13
13
  Time.zone = "Australia/Melbourne"
14
14
 
15
+ begin
16
+ I18n.config.enforce_available_locales = false
17
+ rescue NoMethodError
18
+ # Ignore
19
+ end
20
+
15
21
  RSpec.configure do |config|
16
22
  include SpecsFor
17
23
  include DefineClass
@@ -21,4 +21,17 @@ module DefineClass
21
21
  klass
22
22
  end
23
23
  end
24
+
25
+ def define_module(name, &block)
26
+ before(:each) do
27
+ Object.send(:remove_const, name) if Object.const_defined?(name)
28
+
29
+ mod = Module.new
30
+
31
+ Object.const_set(name, mod)
32
+
33
+ mod.class_eval(&block) if block_given?
34
+ mod
35
+ end
36
+ end
24
37
  end
metadata CHANGED
@@ -1,112 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongomodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
5
- prerelease:
4
+ version: 0.5.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Sam Pohlenz
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-05 00:00:00.000000000 Z
11
+ date: 2014-02-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.1'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.1'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activemodel
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '3.1'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '3.1'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: mongo
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
47
  version: '1.8'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
54
  version: '1.8'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: bundler
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
- version: 1.0.0
61
+ version: '1.0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
- version: 1.0.0
68
+ version: '1.0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rspec
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ~>
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
75
  version: '2.8'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ~>
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
82
  version: '2.8'
94
83
  - !ruby/object:Gem::Dependency
95
- name: guard-rspec
84
+ name: minitest
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ~>
87
+ - - ">="
100
88
  - !ruby/object:Gem::Version
101
- version: 0.5.0
89
+ version: '4.2'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ~>
94
+ - - ">="
108
95
  - !ruby/object:Gem::Version
109
- version: 0.5.0
96
+ version: '4.2'
110
97
  description: MongoModel is a MongoDB ORM for Ruby/Rails similar to ActiveRecord and
111
98
  DataMapper.
112
99
  email:
@@ -115,8 +102,8 @@ executables: []
115
102
  extensions: []
116
103
  extra_rdoc_files: []
117
104
  files:
118
- - .gitignore
119
- - .travis.yml
105
+ - ".gitignore"
106
+ - ".travis.yml"
120
107
  - Gemfile
121
108
  - Guardfile
122
109
  - LICENSE
@@ -129,7 +116,8 @@ files:
129
116
  - gemfiles/rails-3.2.gemfile
130
117
  - gemfiles/rails-4-observers.gemfile
131
118
  - gemfiles/rails-4-protected-attributes.gemfile
132
- - gemfiles/rails-4.gemfile
119
+ - gemfiles/rails-4.0.gemfile
120
+ - gemfiles/rails-4.1.gemfile
133
121
  - lib/mongomodel.rb
134
122
  - lib/mongomodel/attributes/mongo.rb
135
123
  - lib/mongomodel/attributes/store.rb
@@ -289,30 +277,27 @@ files:
289
277
  - spec/support/matchers/run_callbacks.rb
290
278
  - spec/support/models.rb
291
279
  homepage: http://www.mongomodel.org
292
- licenses: []
280
+ licenses:
281
+ - MIT
282
+ metadata: {}
293
283
  post_install_message:
294
284
  rdoc_options: []
295
285
  require_paths:
296
286
  - lib
297
287
  required_ruby_version: !ruby/object:Gem::Requirement
298
- none: false
299
288
  requirements:
300
- - - ! '>='
289
+ - - ">="
301
290
  - !ruby/object:Gem::Version
302
291
  version: '0'
303
- segments:
304
- - 0
305
- hash: -3084382199068025224
306
292
  required_rubygems_version: !ruby/object:Gem::Requirement
307
- none: false
308
293
  requirements:
309
- - - ! '>='
294
+ - - ">="
310
295
  - !ruby/object:Gem::Version
311
296
  version: 1.3.6
312
297
  requirements: []
313
298
  rubyforge_project: mongomodel
314
- rubygems_version: 1.8.24
299
+ rubygems_version: 2.2.2
315
300
  signing_key:
316
- specification_version: 3
301
+ specification_version: 4
317
302
  summary: MongoDB ORM for Ruby/Rails
318
303
  test_files: []
@@ -1,10 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activesupport", :github => "rails/rails", :branch => "4-0-stable"
4
- gem "activemodel", :github => "rails/rails", :branch => "4-0-stable"
5
-
6
- gem "bson_ext", "~> 1.8"
7
- gem "tzinfo"
8
- gem "rake"
9
-
10
- gemspec :path => "../"