tagtical 1.4.3 → 1.4.5
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/VERSION +1 -1
- data/lib/tagtical/taggable/core.rb +7 -8
- data/spec/spec_helper.rb +1 -1
- data/spec/tagtical/tag_spec.rb +4 -5
- data/spec/tagtical/taggable_spec.rb +5 -6
- metadata +13 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.5
|
@@ -72,14 +72,13 @@ module Tagtical::Taggable
|
|
72
72
|
alias_method_chain :tags, :finder_type_options
|
73
73
|
else # handle the Tagtical::Tag subclasses
|
74
74
|
define_method(tag_type.scope_name) do |*args|
|
75
|
-
if
|
76
|
-
instance_variable_get(tag_type.scope_ivar) || instance_variable_set(tag_type.scope_ivar,
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end)
|
75
|
+
if tags.loaded?
|
76
|
+
cache = instance_variable_get(tag_type.scope_ivar) || instance_variable_set(tag_type.scope_ivar, {})
|
77
|
+
tag_type_classes = expand_tag_types(tag_type, *args).map(&:klass)
|
78
|
+
cache[tag_type_classes] ||= tags_with_type_scoping(tag_type, *args).tap do |scope|
|
79
|
+
scope.instance_variable_set(:@loaded, true)
|
80
|
+
scope.instance_variable_set(:@records, tags.select { |t| tag_type_classes.include?(t.class) })
|
81
|
+
end
|
83
82
|
else
|
84
83
|
tags_with_type_scoping(tag_type, *args)
|
85
84
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -25,7 +25,7 @@ end
|
|
25
25
|
|
26
26
|
RSpec::Matchers.define :have_only_tag_values do |expected|
|
27
27
|
match do |actual|
|
28
|
-
actual = actual.tags if actual.respond_to?(:
|
28
|
+
actual = actual.tags if actual.class.respond_to?(:taggable?) && actual.class.taggable?
|
29
29
|
actual.map(&:value).should have_same_elements(expected)
|
30
30
|
end
|
31
31
|
end
|
data/spec/tagtical/tag_spec.rb
CHANGED
@@ -385,11 +385,10 @@ describe Tagtical::Tag do
|
|
385
385
|
|
386
386
|
describe "#derive_class_candidates" do
|
387
387
|
specify do
|
388
|
-
subject.send(:derive_class_candidates).should == [
|
389
|
-
"Tagtical::Tag::TaggableModel::Skill", "Tagtical::Tag::
|
390
|
-
"Tagtical::Tag::Skill", "
|
391
|
-
"Tag::SkillTag", "
|
392
|
-
"SkillTag", "Skill"]
|
388
|
+
subject.send(:derive_class_candidates).should == ["Tagtical::Tag::TaggableModel::SkillTag", "Tagtical::Tag::TaggableModel::Skill", "Tagtical::Tag::TaggableModelSkillTag",
|
389
|
+
"Tagtical::Tag::TaggableModelSkill", "Tag::TaggableModel::SkillTag", "Tag::TaggableModel::Skill", "Tagtical::Tag::SkillTag",
|
390
|
+
"Tagtical::Tag::Skill", "Tag::TaggableModelSkillTag", "Tag::TaggableModelSkill", "TaggableModel::SkillTag",
|
391
|
+
"TaggableModel::Skill", "Tag::SkillTag", "Tag::Skill", "TaggableModelSkillTag", "TaggableModelSkill", "SkillTag", "Skill"]
|
393
392
|
end
|
394
393
|
end
|
395
394
|
|
@@ -67,7 +67,11 @@ describe Tagtical::Taggable do
|
|
67
67
|
it "should not access the database when top level tags are already loaded" do
|
68
68
|
ActiveRecord::Base.connection.expects(:execute).never
|
69
69
|
@taggable.skills.to_a
|
70
|
-
@taggable.
|
70
|
+
@taggable.skills.should have_only_tag_values %w{basketball pottery}
|
71
|
+
@taggable.crafts(:current).should have_only_tag_values %w{pottery}
|
72
|
+
@taggable.skills(:current).should have_only_tag_values %w{basketball}
|
73
|
+
@taggable.skills(:children).should have_only_tag_values %w{pottery}
|
74
|
+
@taggable.tags.should have_only_tag_values %w{train tree basketball pottery}
|
71
75
|
end
|
72
76
|
|
73
77
|
it "should select the correct tags" do
|
@@ -75,11 +79,6 @@ describe Tagtical::Taggable do
|
|
75
79
|
@taggable.crafts.each { |tag| tag.should be_craft }
|
76
80
|
end
|
77
81
|
|
78
|
-
it "should access the database when args are passed in" do
|
79
|
-
ActiveRecord::Base.connection.expects(:execute).once.returns([])
|
80
|
-
@taggable.skills(:conditions => "value='Foo'").to_a
|
81
|
-
end
|
82
|
-
|
83
82
|
end
|
84
83
|
end
|
85
84
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tagtical
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-07-24 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &2154072140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - <=
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2154072140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2154071660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - <=
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.6.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2154071660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sqlite3-ruby
|
38
|
-
requirement: &
|
38
|
+
requirement: &2154071180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2154071180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mysql
|
49
|
-
requirement: &
|
49
|
+
requirement: &2154070700 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2154070700
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &2154070220 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2154070220
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &2154069740 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2154069740
|
80
80
|
description: Tagtical allows you do create subclasses for Tag and add additional functionality
|
81
81
|
in an STI fashion. For example. You could do Tag::Color.find_by_name('blue').to_rgb.
|
82
82
|
It also supports storing weights or relevance on the taggings.
|