deferred_associations 0.5.5 → 0.5.6

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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTc4NmE0YTU4OWY2NDIzOTRkOGE4OTk1YjU4OGNkZWM4Y2EzNTc0Mg==
5
+ data.tar.gz: !binary |-
6
+ N2MwNTZhOTE3MWM2MTQzYmIyZWRmMDRkMjM0OTFmMjFjOGJlZmRiMQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MGI0MjliNWFmNWVkN2E0MjJhZTUzNjRjNjdkNGYzOTY4NGMwNGYyYjdjYmUx
10
+ ZTAzY2Q1MDlhODZhMGJhOGExYTE3ODNmOGIwMGE5ZGM0ZGU2NjE1MmNhZDhh
11
+ ODJmYzE0NjkzMjNmNGU3NTFjNmU0ZmI4YzFlMWEwZWZiMTFhNjE=
12
+ data.tar.gz: !binary |-
13
+ YjUyZGExNGUwN2NjYTgwNmM4NjE3NjViZmMyMGVlYjA2ODFmNjM1MjUzNzM3
14
+ ZjY4YWI4YjJmY2I3MmY3OWUxN2U1NmQxMWI0MGUzZDRmYjMwNTViMmRlYzBl
15
+ ZGE5OTA3YWVlYWYyNjk2OGNhMzMzZTU2YWNhZTFmNzNkZDM5NzE=
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 0.5.6
2
+ =====
3
+ * .reload method on AR objects can contain an optional parameter. Our alias method
4
+ have to support this
5
+
1
6
  0.5.5
2
7
  =====
3
8
  * id-setter for has_many associations couldn't be used twice on the same object
data/Rakefile CHANGED
@@ -1,27 +1,27 @@
1
- task :default do |t|
2
- options = "--colour"
3
- files = FileList['spec/**/*_spec.rb'].map{|f| f.sub(%r{^spec/},'') }
4
- exit system("cd spec && spec #{options} #{files}") ? 0 : 1
5
- end
6
-
7
- begin
8
- require 'jeweler'
9
- project_name = 'deferred_associations'
10
- Jeweler::Tasks.new do |gem|
11
- gem.name = project_name
12
- gem.summary = "Makes ActiveRecord defer/postpone habtm or has_many associations"
13
- gem.description = "Makes ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many
14
- association until you call model.save, allowing validation in the style of normal attributes. Additionally you
15
- can check inside before_save filters, if the association was altered."
16
- gem.homepage = "http://github.com/MartinKoerner/deferred_associations"
17
- gem.email = "martin.koerner@objectfab.de"
18
- gem.authors = ["Martin Koerner", "Tyler Rick", "Alessio Caiazza"]
19
- gem.add_dependency('activerecord')
20
- gem.add_development_dependency('rspec')
21
- gem.files.exclude 'gemfiles/*', '.travis.yml'
22
- end
23
-
24
- Jeweler::GemcutterTasks.new
25
- rescue LoadError
26
- puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
27
- end
1
+ task :default do |t|
2
+ options = "--colour"
3
+ files = FileList['spec/**/*_spec.rb'].map{|f| f.sub(%r{^spec/},'') }
4
+ exit system("cd spec && spec #{options} #{files}") ? 0 : 1
5
+ end
6
+
7
+ begin
8
+ require 'jeweler'
9
+ project_name = 'deferred_associations'
10
+ Jeweler::Tasks.new do |gem|
11
+ gem.name = project_name
12
+ gem.summary = "Makes ActiveRecord defer/postpone habtm or has_many associations"
13
+ gem.description = "Makes ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many
14
+ association until you call model.save, allowing validation in the style of normal attributes. Additionally you
15
+ can check inside before_save filters, if the association was altered."
16
+ gem.homepage = "http://github.com/MartinKoerner/deferred_associations"
17
+ gem.email = "martin.koerner@objectfab.de"
18
+ gem.authors = ["Martin Koerner", "Tyler Rick", "Alessio Caiazza"]
19
+ gem.add_dependency('activerecord')
20
+ gem.add_development_dependency('rspec')
21
+ gem.files.exclude 'gemfiles/*', '.travis.yml'
22
+ end
23
+
24
+ Jeweler::GemcutterTasks.new
25
+ rescue LoadError
26
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
27
+ end
data/Readme.markdown CHANGED
@@ -1,85 +1,85 @@
1
- Make ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many association
2
- until you call model.save, allowing validation in the style of normal attributes.
3
-
4
- [![Build Status](https://secure.travis-ci.org/MartinKoerner/deferred_associations.png?branch=master)](http://travis-ci.org/MartinKoerner/deferred_associations) [![Dependency Status](https://gemnasium.com/MartinKoerner/deferred_associations.png?travis)](https://gemnasium.com/MartinKoerner/deferred_associations)
5
-
6
- How to install
7
- ==============
8
-
9
- gem install deferred_associations
10
-
11
- Usage
12
- =====
13
-
14
- class Room < ActiveRecord::Base
15
- has_and_belongs_to_many_with_deferred_save :people
16
- has_many_with_deferred_save :tables
17
-
18
- validate :usage
19
- before_save :check_change
20
-
21
- def usage
22
- if people.size > 30
23
- errors.add :people, "There are too many people in this room"
24
- end
25
- if tables.size > 15
26
- errors.add :tables, "There are too many tables in this room"
27
- end
28
- # Neither people nor tables are saved to the database, if a validation error is added
29
- end
30
-
31
- def check_change
32
- # you can check, if there were changes to the association
33
- if people != people_without_deferred_save
34
- self.updated_at = Time.now.utc
35
- end
36
- end
37
- end
38
-
39
- Compatibility
40
- =============
41
-
42
- Tested with Rails 2.3.14, 3.2.3, 3.2.14 on Ruby 1.8.7, 1.9.3 and JRuby 1.7.4
43
-
44
- Note, that Rails 3.2.14 associations are partly broken under JRuby cause of https://github.com/rails/rails/issues/11595
45
- You'll need to upgrade activerecord-jdbc-adapter to >= 1.3.0.beta1, if you want to use this combination.
46
-
47
- Gotchas
48
- =======
49
-
50
- Be aware, that the habtm association objects sometimes asks the database instead of giving you the data directly from the array. So you can get something
51
- like
52
-
53
- room = Room.create
54
- room.people << Person.create
55
- room.people.first # => nil, since the DB doesn't have the association saved yet
56
-
57
-
58
- Also it is good to know, that the array you set to an association is stored there directly, so after setting a list, the typical association
59
- methods are not working:
60
-
61
- room = Room.create
62
- room.people.klass # => Person
63
- room.people = [Person.first]
64
- room.people.klass # => undefined method klass for #Array:0x007fa3b9efc2c0`
65
-
66
- Bugs
67
- ====
68
-
69
- http://github.com/MartinKoerner/deferred_associations/issues
70
-
71
- History
72
- ======
73
-
74
- Most of the code for the habtm association was written by TylerRick for his gem [has_and_belongs_to_many_with_deferred_save](https://github.com/TylerRick/has_and_belongs_to_many_with_deferred_save)
75
- Mainly, I changed two things:
76
-
77
- * added ActiveRecord 3 compatibility
78
- * removed singleton methods, because they interfere with caching
79
-
80
- License
81
- =======
82
-
83
- This plugin is licensed under the BSD license.
84
-
1
+ Make ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many association
2
+ until you call model.save, allowing validation in the style of normal attributes.
3
+
4
+ [![Build Status](https://secure.travis-ci.org/MartinKoerner/deferred_associations.png?branch=master)](http://travis-ci.org/MartinKoerner/deferred_associations) [![Dependency Status](https://gemnasium.com/MartinKoerner/deferred_associations.png?travis)](https://gemnasium.com/MartinKoerner/deferred_associations)
5
+
6
+ How to install
7
+ ==============
8
+
9
+ gem install deferred_associations
10
+
11
+ Usage
12
+ =====
13
+
14
+ class Room < ActiveRecord::Base
15
+ has_and_belongs_to_many_with_deferred_save :people
16
+ has_many_with_deferred_save :tables
17
+
18
+ validate :usage
19
+ before_save :check_change
20
+
21
+ def usage
22
+ if people.size > 30
23
+ errors.add :people, "There are too many people in this room"
24
+ end
25
+ if tables.size > 15
26
+ errors.add :tables, "There are too many tables in this room"
27
+ end
28
+ # Neither people nor tables are saved to the database, if a validation error is added
29
+ end
30
+
31
+ def check_change
32
+ # you can check, if there were changes to the association
33
+ if people != people_without_deferred_save
34
+ self.updated_at = Time.now.utc
35
+ end
36
+ end
37
+ end
38
+
39
+ Compatibility
40
+ =============
41
+
42
+ Tested with Rails 2.3.14, 3.2.3, 3.2.14, 4.0 and 4.1 on Ruby 1.8.7, 1.9.3 and JRuby 1.7.12
43
+
44
+ Note, that Rails 3.2.14 associations are partly broken under JRuby cause of https://github.com/rails/rails/issues/11595
45
+ You'll need to upgrade activerecord-jdbc-adapter to >= 1.3.0.beta1, if you want to use this combination.
46
+
47
+ Gotchas
48
+ =======
49
+
50
+ Be aware, that the habtm association objects sometimes asks the database instead of giving you the data directly from the array. So you can get something
51
+ like
52
+
53
+ room = Room.create
54
+ room.people << Person.create
55
+ room.people.first # => nil, since the DB doesn't have the association saved yet
56
+
57
+
58
+ Also it is good to know, that the array you set to an association is stored there directly, so after setting a list, the typical association
59
+ methods are not working:
60
+
61
+ room = Room.create
62
+ room.people.klass # => Person
63
+ room.people = [Person.first]
64
+ room.people.klass # => undefined method klass for #Array:0x007fa3b9efc2c0`
65
+
66
+ Bugs
67
+ ====
68
+
69
+ http://github.com/MartinKoerner/deferred_associations/issues
70
+
71
+ History
72
+ ======
73
+
74
+ Most of the code for the habtm association was written by TylerRick for his gem [has_and_belongs_to_many_with_deferred_save](https://github.com/TylerRick/has_and_belongs_to_many_with_deferred_save)
75
+ Mainly, I changed two things:
76
+
77
+ * added ActiveRecord 3 compatibility
78
+ * removed singleton methods, because they interfere with caching
79
+
80
+ License
81
+ =======
82
+
83
+ This plugin is licensed under the BSD license.
84
+
85
85
  2013 (c) Martin Körner
@@ -1,61 +1,61 @@
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 = "deferred_associations"
8
- s.version = "0.5.5"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Martin Koerner", "Tyler Rick", "Alessio Caiazza"]
12
- s.date = "2013-10-25"
13
- s.description = "Makes ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many\n association until you call model.save, allowing validation in the style of normal attributes. Additionally you\n can check inside before_save filters, if the association was altered."
14
- s.email = "martin.koerner@objectfab.de"
15
- s.extra_rdoc_files = [
16
- "CHANGELOG",
17
- "Readme.markdown"
18
- ]
19
- s.files = [
20
- "CHANGELOG",
21
- "Rakefile",
22
- "Readme.markdown",
23
- "VERSION",
24
- "deferred_associations.gemspec",
25
- "init.rb",
26
- "lib/array_to_association_wrapper.rb",
27
- "lib/deferred_associations.rb",
28
- "lib/has_and_belongs_to_many_with_deferred_save.rb",
29
- "lib/has_many_with_deferred_save.rb",
30
- "spec/db/database.yml",
31
- "spec/db/schema.rb",
32
- "spec/has_and_belongs_to_many_with_deferred_save_spec.rb",
33
- "spec/has_many_with_deferred_save_spec.rb",
34
- "spec/models/chair.rb",
35
- "spec/models/door.rb",
36
- "spec/models/person.rb",
37
- "spec/models/room.rb",
38
- "spec/models/table.rb",
39
- "spec/spec_helper.rb"
40
- ]
41
- s.homepage = "http://github.com/MartinKoerner/deferred_associations"
42
- s.require_paths = ["lib"]
43
- s.rubygems_version = "1.8.24"
44
- s.summary = "Makes ActiveRecord defer/postpone habtm or has_many associations"
45
-
46
- if s.respond_to? :specification_version then
47
- s.specification_version = 3
48
-
49
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<activerecord>, [">= 0"])
51
- s.add_development_dependency(%q<rspec>, [">= 0"])
52
- else
53
- s.add_dependency(%q<activerecord>, [">= 0"])
54
- s.add_dependency(%q<rspec>, [">= 0"])
55
- end
56
- else
57
- s.add_dependency(%q<activerecord>, [">= 0"])
58
- s.add_dependency(%q<rspec>, [">= 0"])
59
- end
60
- end
61
-
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 = "deferred_associations"
8
+ s.version = "0.5.6"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Martin Koerner", "Tyler Rick", "Alessio Caiazza"]
12
+ s.date = "2013-10-25"
13
+ s.description = "Makes ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many\n association until you call model.save, allowing validation in the style of normal attributes. Additionally you\n can check inside before_save filters, if the association was altered."
14
+ s.email = "martin.koerner@objectfab.de"
15
+ s.extra_rdoc_files = [
16
+ "CHANGELOG",
17
+ "Readme.markdown"
18
+ ]
19
+ s.files = [
20
+ "CHANGELOG",
21
+ "Rakefile",
22
+ "Readme.markdown",
23
+ "VERSION",
24
+ "deferred_associations.gemspec",
25
+ "init.rb",
26
+ "lib/array_to_association_wrapper.rb",
27
+ "lib/deferred_associations.rb",
28
+ "lib/has_and_belongs_to_many_with_deferred_save.rb",
29
+ "lib/has_many_with_deferred_save.rb",
30
+ "spec/db/database.yml",
31
+ "spec/db/schema.rb",
32
+ "spec/has_and_belongs_to_many_with_deferred_save_spec.rb",
33
+ "spec/has_many_with_deferred_save_spec.rb",
34
+ "spec/models/chair.rb",
35
+ "spec/models/door.rb",
36
+ "spec/models/person.rb",
37
+ "spec/models/room.rb",
38
+ "spec/models/table.rb",
39
+ "spec/spec_helper.rb"
40
+ ]
41
+ s.homepage = "http://github.com/MartinKoerner/deferred_associations"
42
+ s.require_paths = ["lib"]
43
+ s.rubygems_version = "1.8.24"
44
+ s.summary = "Makes ActiveRecord defer/postpone habtm or has_many associations"
45
+
46
+ if s.respond_to? :specification_version then
47
+ s.specification_version = 3
48
+
49
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<activerecord>, [">= 0"])
51
+ s.add_development_dependency(%q<rspec>, [">= 0"])
52
+ else
53
+ s.add_dependency(%q<activerecord>, [">= 0"])
54
+ s.add_dependency(%q<rspec>, [">= 0"])
55
+ end
56
+ else
57
+ s.add_dependency(%q<activerecord>, [">= 0"])
58
+ s.add_dependency(%q<rspec>, [">= 0"])
59
+ end
60
+ end
61
+
data/init.rb CHANGED
@@ -1 +1 @@
1
- require 'deferred_associations'
1
+ require 'deferred_associations'