acts-as-taggable-on 1.0.13 → 2.0.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.
Files changed (43) hide show
  1. data/CHANGELOG +5 -2
  2. data/Gemfile +10 -0
  3. data/README.rdoc +56 -26
  4. data/Rakefile +46 -16
  5. data/VERSION +1 -1
  6. data/generators/acts_as_taggable_on_migration/acts_as_taggable_on_migration_generator.rb +7 -0
  7. data/generators/acts_as_taggable_on_migration/templates/migration.rb +29 -0
  8. data/lib/acts-as-taggable-on.rb +30 -7
  9. data/lib/acts_as_taggable_on/acts_as_taggable_on/cache.rb +53 -0
  10. data/lib/acts_as_taggable_on/acts_as_taggable_on/collection.rb +132 -0
  11. data/lib/acts_as_taggable_on/acts_as_taggable_on/core.rb +241 -0
  12. data/lib/acts_as_taggable_on/acts_as_taggable_on/ownership.rb +101 -0
  13. data/lib/acts_as_taggable_on/acts_as_taggable_on/related.rb +65 -0
  14. data/lib/acts_as_taggable_on/acts_as_taggable_on.rb +43 -373
  15. data/lib/acts_as_taggable_on/acts_as_tagger.rb +60 -45
  16. data/lib/acts_as_taggable_on/compatibility/Gemfile +8 -0
  17. data/lib/acts_as_taggable_on/compatibility/active_record_backports.rb +17 -0
  18. data/lib/acts_as_taggable_on/compatibility/postgresql.rb +44 -0
  19. data/lib/acts_as_taggable_on/tag.rb +70 -22
  20. data/lib/acts_as_taggable_on/tag_list.rb +81 -80
  21. data/lib/acts_as_taggable_on/tagging.rb +23 -7
  22. data/lib/acts_as_taggable_on/tags_helper.rb +14 -8
  23. data/lib/generators/acts_as_taggable_on/migration/migration_generator.rb +32 -0
  24. data/lib/generators/acts_as_taggable_on/migration/templates/active_record/migration.rb +28 -0
  25. data/rails/init.rb +1 -7
  26. data/spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb +102 -55
  27. data/spec/acts_as_taggable_on/acts_as_tagger_spec.rb +48 -6
  28. data/spec/acts_as_taggable_on/tag_list_spec.rb +21 -3
  29. data/spec/acts_as_taggable_on/tag_spec.rb +77 -24
  30. data/spec/acts_as_taggable_on/taggable_spec.rb +173 -76
  31. data/spec/acts_as_taggable_on/tagger_spec.rb +74 -6
  32. data/spec/acts_as_taggable_on/tagging_spec.rb +22 -7
  33. data/spec/acts_as_taggable_on/tags_helper_spec.rb +4 -6
  34. data/spec/bm.rb +52 -0
  35. data/spec/database.yml +17 -0
  36. data/spec/database.yml.sample +17 -0
  37. data/spec/models.rb +31 -0
  38. data/spec/schema.rb +13 -2
  39. data/spec/spec_helper.rb +52 -40
  40. metadata +31 -9
  41. data/lib/acts_as_taggable_on/group_helper.rb +0 -12
  42. data/spec/acts_as_taggable_on/group_helper_spec.rb +0 -18
  43. data/spec/spec.opts +0 -3
data/spec/schema.rb CHANGED
@@ -19,14 +19,25 @@ ActiveRecord::Schema.define :version => 0 do
19
19
  create_table :taggable_models, :force => true do |t|
20
20
  t.column :name, :string
21
21
  t.column :type, :string
22
- #t.column :cached_tag_list, :string
23
22
  end
23
+
24
+ create_table :untaggable_models, :force => true do |t|
25
+ t.column :taggable_model_id, :integer
26
+ t.column :name, :string
27
+ end
28
+
29
+ create_table :cached_models, :force => true do |t|
30
+ t.column :name, :string
31
+ t.column :type, :string
32
+ t.column :cached_tag_list, :string
33
+ end
34
+
24
35
  create_table :taggable_users, :force => true do |t|
25
36
  t.column :name, :string
26
37
  end
38
+
27
39
  create_table :other_taggable_models, :force => true do |t|
28
40
  t.column :name, :string
29
41
  t.column :type, :string
30
- #t.column :cached_tag_list, :string
31
42
  end
32
43
  end
data/spec/spec_helper.rb CHANGED
@@ -1,48 +1,60 @@
1
- # require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
2
- require 'rubygems'
3
- require 'activerecord'
4
- require 'spec'
5
-
6
- module Spec::Example::ExampleGroupMethods
7
- alias :context :describe
8
- end
9
-
10
- TEST_DATABASE_FILE = File.join(File.dirname(__FILE__), '..', 'test.sqlite3')
11
-
12
- File.unlink(TEST_DATABASE_FILE) if File.exist?(TEST_DATABASE_FILE)
13
- ActiveRecord::Base.establish_connection(
14
- "adapter" => "sqlite3", "database" => TEST_DATABASE_FILE
15
- )
16
-
17
- RAILS_DEFAULT_LOGGER = Logger.new(File.join(File.dirname(__FILE__), "debug.log"))
18
-
19
- load(File.dirname(__FILE__) + '/schema.rb')
20
-
21
- $: << File.join(File.dirname(__FILE__), '..', 'lib')
22
- require File.join(File.dirname(__FILE__), '..', 'init')
23
-
24
- class TaggableModel < ActiveRecord::Base
25
- acts_as_taggable
26
- acts_as_taggable_on :languages
27
- acts_as_taggable_on :skills
28
- acts_as_taggable_on :needs, :offerings
29
- end
30
-
31
- class OtherTaggableModel < ActiveRecord::Base
32
- acts_as_taggable_on :tags, :languages
33
- acts_as_taggable_on :needs, :offerings
1
+ $LOAD_PATH << "." unless $LOAD_PATH.include?(".")
2
+
3
+ begin
4
+ require "rubygems"
5
+ require "bundler"
6
+
7
+ if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.5")
8
+ raise RuntimeError, "Your bundler version is too old." +
9
+ "Run `gem install bundler` to upgrade."
10
+ end
11
+
12
+ # Set up load paths for all bundled gems
13
+ Bundler.setup
14
+ rescue Bundler::GemNotFound
15
+ raise RuntimeError, "Bundler couldn't find some gems." +
16
+ "Did you run `bundle install`?"
34
17
  end
35
18
 
36
- class InheritingTaggableModel < TaggableModel
19
+ Bundler.require
20
+ require File.expand_path('../../lib/acts-as-taggable-on', __FILE__)
21
+
22
+ unless [].respond_to?(:freq)
23
+ class Array
24
+ def freq
25
+ k=Hash.new(0)
26
+ each {|e| k[e]+=1}
27
+ k
28
+ end
29
+ end
37
30
  end
38
31
 
39
- class AlteredInheritingTaggableModel < TaggableModel
40
- acts_as_taggable_on :parts
32
+ ENV['DB'] ||= 'sqlite3'
33
+
34
+ database_yml = File.expand_path('../database.yml', __FILE__)
35
+ if File.exists?(database_yml)
36
+ active_record_configuration = YAML.load_file(database_yml)[ENV['DB']]
37
+
38
+ ActiveRecord::Base.establish_connection(active_record_configuration)
39
+ ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), "debug.log"))
40
+
41
+ ActiveRecord::Base.silence do
42
+ ActiveRecord::Migration.verbose = false
43
+
44
+ load(File.dirname(__FILE__) + '/schema.rb')
45
+ load(File.dirname(__FILE__) + '/models.rb')
46
+ end
47
+
48
+ else
49
+ raise "Please create #{database_yml} first to configure your database. Take a look at: #{database_yml}.sample"
41
50
  end
42
51
 
43
- class TaggableUser < ActiveRecord::Base
44
- acts_as_tagger
52
+ def clean_database!
53
+ models = [ActsAsTaggableOn::Tag, ActsAsTaggableOn::Tagging, TaggableModel, OtherTaggableModel, InheritingTaggableModel,
54
+ AlteredInheritingTaggableModel, TaggableUser, UntaggableModel]
55
+ models.each do |model|
56
+ ActiveRecord::Base.connection.execute "DELETE FROM #{model.table_name}"
57
+ end
45
58
  end
46
59
 
47
- class UntaggableModel < ActiveRecord::Base
48
- end
60
+ clean_database!
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts-as-taggable-on
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.13
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 0
8
+ - 6
9
+ version: 2.0.6
5
10
  platform: ruby
6
11
  authors:
7
12
  - Michael Bleigh
@@ -9,7 +14,7 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-12-11 00:00:00 +01:00
17
+ date: 2010-05-19 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies: []
15
20
 
@@ -23,30 +28,44 @@ extra_rdoc_files:
23
28
  - README.rdoc
24
29
  files:
25
30
  - CHANGELOG
31
+ - Gemfile
26
32
  - MIT-LICENSE
27
33
  - README.rdoc
28
34
  - Rakefile
29
35
  - VERSION
36
+ - generators/acts_as_taggable_on_migration/acts_as_taggable_on_migration_generator.rb
37
+ - generators/acts_as_taggable_on_migration/templates/migration.rb
30
38
  - lib/acts-as-taggable-on.rb
31
39
  - lib/acts_as_taggable_on/acts_as_taggable_on.rb
40
+ - lib/acts_as_taggable_on/acts_as_taggable_on/cache.rb
41
+ - lib/acts_as_taggable_on/acts_as_taggable_on/collection.rb
42
+ - lib/acts_as_taggable_on/acts_as_taggable_on/core.rb
43
+ - lib/acts_as_taggable_on/acts_as_taggable_on/ownership.rb
44
+ - lib/acts_as_taggable_on/acts_as_taggable_on/related.rb
32
45
  - lib/acts_as_taggable_on/acts_as_tagger.rb
33
- - lib/acts_as_taggable_on/group_helper.rb
46
+ - lib/acts_as_taggable_on/compatibility/Gemfile
47
+ - lib/acts_as_taggable_on/compatibility/active_record_backports.rb
48
+ - lib/acts_as_taggable_on/compatibility/postgresql.rb
34
49
  - lib/acts_as_taggable_on/tag.rb
35
50
  - lib/acts_as_taggable_on/tag_list.rb
36
51
  - lib/acts_as_taggable_on/tagging.rb
37
52
  - lib/acts_as_taggable_on/tags_helper.rb
53
+ - lib/generators/acts_as_taggable_on/migration/migration_generator.rb
54
+ - lib/generators/acts_as_taggable_on/migration/templates/active_record/migration.rb
38
55
  - rails/init.rb
39
56
  - spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb
40
57
  - spec/acts_as_taggable_on/acts_as_tagger_spec.rb
41
- - spec/acts_as_taggable_on/group_helper_spec.rb
42
58
  - spec/acts_as_taggable_on/tag_list_spec.rb
43
59
  - spec/acts_as_taggable_on/tag_spec.rb
44
60
  - spec/acts_as_taggable_on/taggable_spec.rb
45
61
  - spec/acts_as_taggable_on/tagger_spec.rb
46
62
  - spec/acts_as_taggable_on/tagging_spec.rb
47
63
  - spec/acts_as_taggable_on/tags_helper_spec.rb
64
+ - spec/bm.rb
65
+ - spec/database.yml
66
+ - spec/database.yml.sample
67
+ - spec/models.rb
48
68
  - spec/schema.rb
49
- - spec/spec.opts
50
69
  - spec/spec_helper.rb
51
70
  has_rdoc: true
52
71
  homepage: http://github.com/mbleigh/acts-as-taggable-on
@@ -61,30 +80,33 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
80
  requirements:
62
81
  - - ">="
63
82
  - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
64
85
  version: "0"
65
- version:
66
86
  required_rubygems_version: !ruby/object:Gem::Requirement
67
87
  requirements:
68
88
  - - ">="
69
89
  - !ruby/object:Gem::Version
90
+ segments:
91
+ - 0
70
92
  version: "0"
71
- version:
72
93
  requirements: []
73
94
 
74
95
  rubyforge_project:
75
- rubygems_version: 1.3.5
96
+ rubygems_version: 1.3.6
76
97
  signing_key:
77
98
  specification_version: 3
78
99
  summary: ActsAsTaggableOn is a tagging plugin for Rails that provides multiple tagging contexts on a single model.
79
100
  test_files:
80
101
  - spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb
81
102
  - spec/acts_as_taggable_on/acts_as_tagger_spec.rb
82
- - spec/acts_as_taggable_on/group_helper_spec.rb
83
103
  - spec/acts_as_taggable_on/tag_list_spec.rb
84
104
  - spec/acts_as_taggable_on/tag_spec.rb
85
105
  - spec/acts_as_taggable_on/taggable_spec.rb
86
106
  - spec/acts_as_taggable_on/tagger_spec.rb
87
107
  - spec/acts_as_taggable_on/tagging_spec.rb
88
108
  - spec/acts_as_taggable_on/tags_helper_spec.rb
109
+ - spec/bm.rb
110
+ - spec/models.rb
89
111
  - spec/schema.rb
90
112
  - spec/spec_helper.rb
@@ -1,12 +0,0 @@
1
- module ActiveRecord
2
- module Acts
3
- module TaggableOn
4
- module GroupHelper
5
- # all column names are necessary for PostgreSQL group clause
6
- def grouped_column_names_for(object)
7
- object.column_names.map { |column| "#{object.table_name}.#{column}" }.join(", ")
8
- end
9
- end
10
- end
11
- end
12
- end
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "Group Helper" do
4
-
5
- describe "grouped_column_names_for method" do
6
- before(:each) do
7
- @taggable = TaggableModel.new(:name => "Bob Jones")
8
- end
9
-
10
- it "should return all column names joined for Tag GROUP clause" do
11
- @taggable.grouped_column_names_for(Tag).should == "tags.id, tags.name"
12
- end
13
-
14
- it "should return all column names joined for TaggableModel GROUP clause" do
15
- @taggable.grouped_column_names_for(TaggableModel).should == "taggable_models.id, taggable_models.name, taggable_models.type"
16
- end
17
- end
18
- end
data/spec/spec.opts DELETED
@@ -1,3 +0,0 @@
1
- --colour
2
- --reverse
3
- --backtrace