goldiloader 0.0.7 → 0.0.8
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 +4 -4
- data/.travis.yml +5 -5
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/goldiloader/association_info.rb +8 -7
- data/lib/goldiloader/version.rb +1 -1
- data/spec/db/schema.rb +4 -0
- data/spec/goldiloader/goldiloader_spec.rb +34 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 218ef1dd67241dac5ee6c56cc0fc5e9dc01edd8a
|
4
|
+
data.tar.gz: 8dfc1cd8a8a9c7c4e42a7ece035734b6e72d8762
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 471b2b2f4ac390b7d31ce55810eadcbc845adb7e5f9a34a5b3f1a63d49430e1f8f8cdd384d445ceb9c4c308c427ae4be3d0297c0e87c9e82609204189ea10a6b
|
7
|
+
data.tar.gz: 73120bf84295153faee36635aecb18920c4cf86df13333fcef6c4e857b3715dd0afdf9fe6538dee7e578eb3472694eed1a7fb4077fba80406e3ae84cef8d7cfc
|
data/.travis.yml
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
language: ruby
|
2
2
|
env:
|
3
|
-
- RAILS_VERSION="~> 3.2.
|
4
|
-
- RAILS_VERSION="~> 4.0.
|
5
|
-
- RAILS_VERSION="~> 4.1.
|
6
|
-
- RAILS_VERSION="~> 4.2.0.
|
3
|
+
- RAILS_VERSION="~> 3.2.20" JRUBY_OPTS="$JRUBY_OPTS --debug"
|
4
|
+
- RAILS_VERSION="~> 4.0.11" JRUBY_OPTS="$JRUBY_OPTS --debug"
|
5
|
+
- RAILS_VERSION="~> 4.1.7" JRUBY_OPTS="$JRUBY_OPTS --debug"
|
6
|
+
- RAILS_VERSION="~> 4.2.0.beta4" JRUBY_OPTS="$JRUBY_OPTS --debug"
|
7
7
|
rvm:
|
8
8
|
- 1.9.3
|
9
9
|
- 2.0.0
|
@@ -13,4 +13,4 @@ matrix:
|
|
13
13
|
exclude:
|
14
14
|
# See https://github.com/salsify/goldiloader/issues/22
|
15
15
|
- rvm: jruby-19mode
|
16
|
-
env: RAILS_VERSION="~> 4.2.0.
|
16
|
+
env: RAILS_VERSION="~> 4.2.0.beta4" JRUBY_OPTS="$JRUBY_OPTS --debug"
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
### 0.0.8 (unreleased)
|
4
|
+
* Fix [issue 23](https://github.com/salsify/goldiloader/issues/23) - Handle polymorphic belongs_to
|
5
|
+
associations in Rails 4 that have a mix of non-nil and nil values.
|
6
|
+
|
7
|
+
|
3
8
|
### 0.0.7
|
4
9
|
* Fix [issue 20](https://github.com/salsify/goldiloader/issues/20) by not auto-eager loading
|
5
10
|
associations that are instance dependent. Eager loading these associations produces potentially
|
data/README.md
CHANGED
@@ -170,7 +170,7 @@ Goldiloader detects associations with any of these options and disables automati
|
|
170
170
|
|
171
171
|
## Status
|
172
172
|
|
173
|
-
This gem is tested with Rails 3.2, 4.0, and 4.
|
173
|
+
This gem is tested with Rails 3.2, 4.0, 4.1, and 4.2 using MRI 1.9.3, 2.0.0, 2.1.0 and JRuby in 1.9 mode.
|
174
174
|
|
175
175
|
Let us know if you find any issues or have any other feedback.
|
176
176
|
|
@@ -16,32 +16,32 @@ module Goldiloader
|
|
16
16
|
delegate :association_scope, :reflection, to: :@association
|
17
17
|
|
18
18
|
def read_only?
|
19
|
-
association_scope.readonly_value.present?
|
19
|
+
association_scope && association_scope.readonly_value.present?
|
20
20
|
end
|
21
21
|
|
22
22
|
def offset?
|
23
|
-
association_scope.offset_value.present?
|
23
|
+
association_scope && association_scope.offset_value.present?
|
24
24
|
end
|
25
25
|
|
26
26
|
def limit?
|
27
|
-
association_scope.limit_value.present?
|
27
|
+
association_scope && association_scope.limit_value.present?
|
28
28
|
end
|
29
29
|
|
30
30
|
def from?
|
31
|
-
association_scope.from_value.present?
|
31
|
+
association_scope && association_scope.from_value.present?
|
32
32
|
end
|
33
33
|
|
34
34
|
def group?
|
35
|
-
association_scope.group_values.present?
|
35
|
+
association_scope && association_scope.group_values.present?
|
36
36
|
end
|
37
37
|
|
38
38
|
def joins?
|
39
39
|
# Yuck - Through associations will always have a join for *each* 'through' table
|
40
|
-
(association_scope.joins_values.size - num_through_joins) > 0
|
40
|
+
association_scope && (association_scope.joins_values.size - num_through_joins) > 0
|
41
41
|
end
|
42
42
|
|
43
43
|
def uniq?
|
44
|
-
association_scope.uniq_value
|
44
|
+
association_scope && association_scope.uniq_value
|
45
45
|
end
|
46
46
|
|
47
47
|
def instance_dependent?
|
@@ -50,6 +50,7 @@ module Goldiloader
|
|
50
50
|
|
51
51
|
def unscope?
|
52
52
|
Goldiloader::Compatibility.unscope_query_method_enabled? &&
|
53
|
+
association_scope &&
|
53
54
|
association_scope.unscope_values.present?
|
54
55
|
end
|
55
56
|
|
data/lib/goldiloader/version.rb
CHANGED
data/spec/db/schema.rb
CHANGED
@@ -10,6 +10,8 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
10
10
|
t.string :title
|
11
11
|
t.integer :blog_id
|
12
12
|
t.integer :author_id
|
13
|
+
t.string :owner_type
|
14
|
+
t.integer :owner_id
|
13
15
|
end
|
14
16
|
|
15
17
|
create_table(:users, force: true) do |t|
|
@@ -106,6 +108,8 @@ class Post < ActiveRecord::Base
|
|
106
108
|
has_many :post_tags
|
107
109
|
has_many :tags, through: :post_tags
|
108
110
|
|
111
|
+
belongs_to :owner, polymorphic: true
|
112
|
+
|
109
113
|
if ActiveRecord::VERSION::MAJOR >= 4
|
110
114
|
has_many :unique_tags, -> { distinct }, through: :post_tags, source: :tag, class_name: 'Tag'
|
111
115
|
else
|
@@ -475,13 +475,46 @@ describe Goldiloader do
|
|
475
475
|
expect(posts.first.unique_tags.to_a).to match_array([child_tag1, child_tag3])
|
476
476
|
end
|
477
477
|
|
478
|
-
it "auto eager the association" do
|
478
|
+
it "auto eager loads the association" do
|
479
479
|
posts.each do |blog|
|
480
480
|
expect(blog.association(:unique_tags)).to be_loaded
|
481
481
|
end
|
482
482
|
end
|
483
483
|
end
|
484
484
|
|
485
|
+
context "polymorphic associations with nil" do
|
486
|
+
let!(:user) { User.create! }
|
487
|
+
let!(:group) { Group.create! }
|
488
|
+
|
489
|
+
let!(:post1) do
|
490
|
+
Post.create! { |post| post.owner = user }
|
491
|
+
end
|
492
|
+
|
493
|
+
let!(:post2) do
|
494
|
+
Post.create! { |post| post.owner = group }
|
495
|
+
end
|
496
|
+
|
497
|
+
let!(:post3) do
|
498
|
+
Post.create!
|
499
|
+
end
|
500
|
+
|
501
|
+
let(:posts) { Post.where(id: [post1, post2, post3].map(&:id)).order(:id).to_a }
|
502
|
+
|
503
|
+
before do
|
504
|
+
posts.first.owner
|
505
|
+
end
|
506
|
+
|
507
|
+
it "loads the association correctly" do
|
508
|
+
expect(posts.map(&:owner)).to eq [user, group, nil]
|
509
|
+
end
|
510
|
+
|
511
|
+
it "auto eager loads the association" do
|
512
|
+
posts.select(&:owner_id).each do |post|
|
513
|
+
expect(post.association(:owner)).to be_loaded
|
514
|
+
end
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
485
518
|
context "when a model is destroyed" do
|
486
519
|
let!(:posts) { Post.where(blog_id: blog1.id).to_a }
|
487
520
|
let(:destroyed_post) { posts.first }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goldiloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Turkel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|