tagutils 0.1.0 → 0.1.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.
- data/.gemtest +0 -0
- data/Manifest.txt +5 -1
- data/README.md +87 -22
- data/Rakefile +4 -3
- data/lib/tagutils.rb +12 -5
- data/lib/tagutils/active_record.rb +40 -0
- data/lib/tagutils/models/tag.rb +44 -0
- data/lib/tagutils/models/tagging.rb +16 -0
- data/lib/tagutils/schema.rb +11 -4
- data/lib/tagutils/version.rb +1 -2
- data/test/helper.rb +82 -0
- data/test/test_models.rb +41 -0
- metadata +28 -11
- data/lib/tagutils/models.rb +0 -28
data/.gemtest
ADDED
File without changes
|
data/Manifest.txt
CHANGED
@@ -3,6 +3,10 @@ Manifest.txt
|
|
3
3
|
README.md
|
4
4
|
Rakefile
|
5
5
|
lib/tagutils.rb
|
6
|
-
lib/tagutils/
|
6
|
+
lib/tagutils/active_record.rb
|
7
|
+
lib/tagutils/models/tag.rb
|
8
|
+
lib/tagutils/models/tagging.rb
|
7
9
|
lib/tagutils/schema.rb
|
8
10
|
lib/tagutils/version.rb
|
11
|
+
test/helper.rb
|
12
|
+
test/test_models.rb
|
data/README.md
CHANGED
@@ -7,9 +7,23 @@ tagutils gems - tag utilities (tag, taggings, tag list, etc.)
|
|
7
7
|
* gem :: [rubygems.org/gems/tagutils](https://rubygems.org/gems/tagutils)
|
8
8
|
* rdoc :: [rubydoc.info/gems/tagutils](http://rubydoc.info/gems/tagutils)
|
9
9
|
|
10
|
+
|
10
11
|
## Usage
|
11
12
|
|
12
|
-
|
13
|
+
~~~
|
14
|
+
class Country < ActiveRecord::Base
|
15
|
+
has_many :taggings, class_name: 'TagDb::Model::Tagging', :as => :taggable
|
16
|
+
has_many :tags, class_name: 'TagDb::Model::Tag', :through => :taggings
|
17
|
+
end
|
18
|
+
~~~
|
19
|
+
|
20
|
+
or
|
21
|
+
|
22
|
+
~~~
|
23
|
+
class Country < ActiveRecord::Base
|
24
|
+
has_many_tags
|
25
|
+
end
|
26
|
+
~~~
|
13
27
|
|
14
28
|
|
15
29
|
## Real World Usage
|
@@ -21,6 +35,27 @@ TBD
|
|
21
35
|
|
22
36
|
## Alternatives
|
23
37
|
|
38
|
+
|
39
|
+
### Tags
|
40
|
+
|
41
|
+
- [gutentag](https://github.com/pat/gutentag)
|
42
|
+
|
43
|
+
~~~
|
44
|
+
create_table :taggings do |t|
|
45
|
+
t.integer :tag_id, null: false
|
46
|
+
t.integer :taggable_id, null: false
|
47
|
+
t.string :taggable_type, null: false
|
48
|
+
t.timestamps
|
49
|
+
end
|
50
|
+
|
51
|
+
create_table :tags do |t|
|
52
|
+
t.string :name, null: false
|
53
|
+
t.integer :taggings_count, null: false, default: 0
|
54
|
+
t.timestamps
|
55
|
+
end
|
56
|
+
~~~
|
57
|
+
|
58
|
+
|
24
59
|
- [acts_as_taggable_on](https://github.com/mbleigh/acts-as-taggable-on)
|
25
60
|
|
26
61
|
~~~
|
@@ -30,9 +65,9 @@ end
|
|
30
65
|
|
31
66
|
create_table :taggings do |t|
|
32
67
|
t.references :tag
|
33
|
-
t.references :taggable, :
|
34
|
-
t.references :tagger, :
|
35
|
-
t.string :context, :
|
68
|
+
t.references :taggable, polymorphic: true
|
69
|
+
t.references :tagger, polymorphic: true
|
70
|
+
t.string :context, limit: 128
|
36
71
|
t.datetime :created_at
|
37
72
|
end
|
38
73
|
~~~
|
@@ -44,14 +79,14 @@ end
|
|
44
79
|
|
45
80
|
~~~
|
46
81
|
create_table :tags do |t|
|
47
|
-
t.string :name, :
|
48
|
-
t.string :kind, :
|
82
|
+
t.string :name, default: ''
|
83
|
+
t.string :kind, default: ''
|
49
84
|
end
|
50
85
|
|
51
86
|
create_table :taggings do |t|
|
52
87
|
t.integer :tag_id
|
53
88
|
|
54
|
-
t.string :taggable_type, :
|
89
|
+
t.string :taggable_type, default: ''
|
55
90
|
t.integer :taggable_id
|
56
91
|
end
|
57
92
|
~~~
|
@@ -67,8 +102,8 @@ end
|
|
67
102
|
|
68
103
|
create_table :taggings do |t|
|
69
104
|
t.references :tag
|
70
|
-
t.references :taggable, :
|
71
|
-
t.references :tagger, :
|
105
|
+
t.references :taggable, polymorphic: true
|
106
|
+
t.references :tagger, polymorphic: true
|
72
107
|
t.string :context
|
73
108
|
t.datetime :created_at
|
74
109
|
end
|
@@ -86,15 +121,15 @@ end
|
|
86
121
|
|
87
122
|
~~~
|
88
123
|
create_table :tags do |t|
|
89
|
-
t.
|
90
|
-
t.
|
124
|
+
t.string :name
|
125
|
+
t.integer :taggings_count, null: false, default: 0
|
91
126
|
end
|
92
127
|
|
93
128
|
create_table :taggings do |t|
|
94
|
-
t.
|
95
|
-
t.
|
96
|
-
t.
|
97
|
-
t.
|
129
|
+
t.integer :tag_id
|
130
|
+
t.integer :taggable_id
|
131
|
+
t.string :taggable_type
|
132
|
+
t.integer :user_id
|
98
133
|
end
|
99
134
|
~~~
|
100
135
|
|
@@ -105,15 +140,15 @@ end
|
|
105
140
|
|
106
141
|
~~~
|
107
142
|
create_table :tags do |t|
|
108
|
-
t.
|
143
|
+
t.string :name
|
109
144
|
end
|
110
|
-
|
145
|
+
|
111
146
|
create_table :taggings do |t|
|
112
|
-
t.
|
113
|
-
t.
|
114
|
-
t.
|
115
|
-
|
116
|
-
t.
|
147
|
+
t.integer :tag_id
|
148
|
+
t.integer :taggable_id
|
149
|
+
t.string :taggable_type
|
150
|
+
|
151
|
+
t.datetime :created_at
|
117
152
|
end
|
118
153
|
~~~
|
119
154
|
|
@@ -123,6 +158,36 @@ end
|
|
123
158
|
- [Ruby Toolbook - Rails Tagging Category](https://www.ruby-toolbox.com/categories/rails_tagging)
|
124
159
|
|
125
160
|
|
161
|
+
### Categories
|
162
|
+
|
163
|
+
- [categoryz3](https://github.com/tscolari/categoryz3)
|
164
|
+
|
165
|
+
~~~
|
166
|
+
create_table :categoryz3_categories do |t|
|
167
|
+
t.string :name
|
168
|
+
t.references :parent
|
169
|
+
t.integer :items_count, default: 0
|
170
|
+
t.integer :child_items_count, default: 0
|
171
|
+
t.integer :childrens_count, default: 0
|
172
|
+
t.timestamps
|
173
|
+
end
|
174
|
+
|
175
|
+
create_table :categoryz3_items do |t|
|
176
|
+
t.references :category, null: false
|
177
|
+
t.references :categorizable, null: false, polymorphic: true
|
178
|
+
t.timestamps
|
179
|
+
end
|
180
|
+
|
181
|
+
create_table :categoryz3_child_items do |t|
|
182
|
+
t.references :category, null: false
|
183
|
+
t.references :categorizable, null: false, polymorphic: true
|
184
|
+
t.references :master_item, null: false
|
185
|
+
t.timestamps
|
186
|
+
end
|
187
|
+
~~~
|
188
|
+
|
189
|
+
- [acts_as_category](https://github.com/wuwx/acts_as_category)
|
190
|
+
|
126
191
|
|
127
192
|
## License
|
128
193
|
|
data/Rakefile
CHANGED
@@ -11,14 +11,15 @@ Hoe.spec 'tagutils' do
|
|
11
11
|
self.urls = ['https://github.com/rubylibs/tagutils']
|
12
12
|
|
13
13
|
self.author = 'Gerald Bauer'
|
14
|
-
self.email = '
|
14
|
+
self.email = 'openmundi@googlegroups.com'
|
15
15
|
|
16
16
|
# switch extension to .markdown for gihub formatting
|
17
17
|
self.readme_file = 'README.md'
|
18
18
|
self.history_file = 'HISTORY.md'
|
19
19
|
|
20
20
|
self.extra_deps = [
|
21
|
-
['
|
21
|
+
['activerecord' ],
|
22
|
+
['logutils', '>= 0.6']
|
22
23
|
]
|
23
24
|
|
24
25
|
self.licenses = ['Public Domain']
|
@@ -28,4 +29,4 @@ Hoe.spec 'tagutils' do
|
|
28
29
|
}
|
29
30
|
|
30
31
|
|
31
|
-
end
|
32
|
+
end
|
data/lib/tagutils.rb
CHANGED
@@ -10,7 +10,11 @@ require 'logutils'
|
|
10
10
|
require 'tagutils/version' # let it always go first
|
11
11
|
|
12
12
|
require 'tagutils/schema'
|
13
|
-
require 'tagutils/models'
|
13
|
+
require 'tagutils/models/tag'
|
14
|
+
require 'tagutils/models/tagging'
|
15
|
+
|
16
|
+
|
17
|
+
require 'tagutils/active_record' # -- adds has_many_tags macro
|
14
18
|
|
15
19
|
|
16
20
|
module TagUtils
|
@@ -28,6 +32,12 @@ end # module TagUtils
|
|
28
32
|
|
29
33
|
|
30
34
|
module TagDb
|
35
|
+
|
36
|
+
#####
|
37
|
+
# add convenience module alias in plural
|
38
|
+
# e.g. lets you use include TagDb::Models
|
39
|
+
Models = Model
|
40
|
+
|
31
41
|
def self.create
|
32
42
|
CreateDb.new.up
|
33
43
|
## WorldDb::Model::Prop.create!( key: 'db.schema.world.version', value: VERSION )
|
@@ -35,14 +45,12 @@ module TagDb
|
|
35
45
|
|
36
46
|
# delete ALL records (use with care!)
|
37
47
|
def self.delete!
|
38
|
-
## fix: use Deleter (see sportdb etc.)
|
39
48
|
puts '*** deleting tag/tagging table records/data...'
|
40
49
|
Model::Tagging.delete_all
|
41
50
|
Model::Tag.delete_all
|
42
|
-
end
|
51
|
+
end
|
43
52
|
|
44
53
|
def self.tables
|
45
|
-
## fix: use Stats class (see sportdb etc.)
|
46
54
|
puts "#{Model::Tag.count} tags"
|
47
55
|
puts "#{Model::Tagging.count} taggings"
|
48
56
|
end
|
@@ -52,4 +60,3 @@ end # module TagDb
|
|
52
60
|
|
53
61
|
|
54
62
|
puts TagUtils.banner # say hello
|
55
|
-
|
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Base
|
5
|
+
|
6
|
+
def self.has_many_tags( opts={} )
|
7
|
+
puts " [TagUtils.has_many_tags] adding taggings n tags has_many assocs to model >#{name}<"
|
8
|
+
has_many :taggings, class_name: 'TagDb::Model::Tagging', :as => :taggable
|
9
|
+
has_many :tags, class_name: 'TagDb::Model::Tag', :through => :taggings
|
10
|
+
end
|
11
|
+
|
12
|
+
end # class Base
|
13
|
+
end # module ActiveRecord
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
####################################################
|
18
|
+
# todo/check: use concern - why? why not? e.g
|
19
|
+
#
|
20
|
+
|
21
|
+
=begin
|
22
|
+
require 'active_support/concern'
|
23
|
+
|
24
|
+
module TagUtils::ActiveRecord
|
25
|
+
extend ActiveSupport::Concern
|
26
|
+
|
27
|
+
module ClassMethods
|
28
|
+
def has_many_tags
|
29
|
+
has_many :taggings, class_name: 'TagDb::Model::Tagging', :as => :taggable
|
30
|
+
has_many :tags, class_name: 'TagDb::Model::Tag', :through => :taggings
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class ActiveRecord::Base
|
36
|
+
include TagUtils::ActiveRecord
|
37
|
+
end
|
38
|
+
|
39
|
+
=end
|
40
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module TagDb
|
4
|
+
module Model
|
5
|
+
|
6
|
+
class Tag < ActiveRecord::Base
|
7
|
+
|
8
|
+
has_many :taggings
|
9
|
+
|
10
|
+
## nb: only allow spaces and underscore inbetween;
|
11
|
+
## do NOT allow digit as first char for now
|
12
|
+
validates :key, :format => { :with => /^([a-z]|[a-z][a-z0-9_ ]*[a-z0-9])$/,
|
13
|
+
:message => 'expected one or more lowercase letters a-z or 0-9 digits or space or underscore' }
|
14
|
+
|
15
|
+
scope :by_key, order( 'key desc' )
|
16
|
+
scope :by_name, order( 'name desc' )
|
17
|
+
scope :top, where( 'grade=1' )
|
18
|
+
|
19
|
+
|
20
|
+
before_save :on_before_save
|
21
|
+
|
22
|
+
def on_before_save
|
23
|
+
# replace space with dash e.g. north america becomes north-america and so on
|
24
|
+
self.slug = key.gsub( ' ', '-' )
|
25
|
+
|
26
|
+
## if name is empty auto fill w/ key
|
27
|
+
self.name = key if name.blank?
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
############################################################################
|
32
|
+
# alias for name (remove! add depreciated api call) ?? why? why not??
|
33
|
+
|
34
|
+
def title() name; end
|
35
|
+
def title=(value) self.name = value; end
|
36
|
+
|
37
|
+
scope :by_title, order( 'name desc' ) ### depreciated ??? - use by_name
|
38
|
+
|
39
|
+
|
40
|
+
end # class Tag
|
41
|
+
|
42
|
+
|
43
|
+
end # module TagDb
|
44
|
+
end # module Model
|
data/lib/tagutils/schema.rb
CHANGED
@@ -11,22 +11,29 @@ create_table :tags do |t|
|
|
11
11
|
t.string :slug, null: false
|
12
12
|
t.string :name # todo: make required? -- note: was title formerly
|
13
13
|
t.integer :grade, null: false, default: 1 # grade/tier e.g. 1/2/3 for now
|
14
|
+
|
14
15
|
## todo: add parent or similar for hierachy (for tag stacks/packs)
|
15
|
-
|
16
|
+
|
17
|
+
# todo: use only t.datetime :created_at (do we get ar magic? is updated used/needed??)
|
18
|
+
t.timestamps
|
16
19
|
end
|
17
20
|
|
18
21
|
add_index :tags, :key, unique: true
|
19
22
|
|
20
23
|
create_table :taggings do |t|
|
21
24
|
t.references :tag, null: false
|
22
|
-
t.references :taggable, polymorphic: true
|
23
|
-
|
25
|
+
t.references :taggable, null: false, polymorphic: true
|
26
|
+
|
27
|
+
# todo: use only t.datetime :created_at (do we get ar magic? is updated used/needed??)
|
28
|
+
t.timestamps
|
24
29
|
end
|
25
30
|
|
26
31
|
add_index :taggings, :tag_id
|
27
32
|
add_index :taggings, [:taggable_id, :taggable_type]
|
33
|
+
add_index :taggings, [:taggable_id, :taggable_type, :tag_id], unique: true
|
34
|
+
|
35
|
+
end # method up
|
28
36
|
|
29
|
-
end
|
30
37
|
|
31
38
|
def down
|
32
39
|
raise ActiveRecord::IrreversibleMigration
|
data/lib/tagutils/version.rb
CHANGED
data/test/helper.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
|
2
|
+
## $:.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
## minitest setup
|
5
|
+
|
6
|
+
# require 'minitest/unit'
|
7
|
+
require 'minitest/autorun'
|
8
|
+
|
9
|
+
# include MiniTest::Unit # lets us use TestCase instead of MiniTest::Unit::TestCase
|
10
|
+
|
11
|
+
|
12
|
+
# ruby stdlibs
|
13
|
+
|
14
|
+
require 'json'
|
15
|
+
require 'uri'
|
16
|
+
require 'pp'
|
17
|
+
require 'logger'
|
18
|
+
|
19
|
+
# ruby gems
|
20
|
+
|
21
|
+
require 'active_record'
|
22
|
+
|
23
|
+
# our own code
|
24
|
+
|
25
|
+
require 'tagutils'
|
26
|
+
require 'logutils/db' # NB: explict require required for LogDb (not automatic)
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
Tag = TagDb::Model::Tag
|
31
|
+
Tagging = TagDb::Model::Tagging
|
32
|
+
|
33
|
+
|
34
|
+
class Movie < ActiveRecord::Base
|
35
|
+
has_many_tags
|
36
|
+
end
|
37
|
+
|
38
|
+
class CreateMovieDb < ActiveRecord::Migration
|
39
|
+
|
40
|
+
def up
|
41
|
+
create_table :movies do |t|
|
42
|
+
t.string :key, null: false
|
43
|
+
t.string :name, null: false
|
44
|
+
t.timestamps
|
45
|
+
end
|
46
|
+
end # method up
|
47
|
+
|
48
|
+
def down
|
49
|
+
raise ActiveRecord::IrreversibleMigration
|
50
|
+
end
|
51
|
+
|
52
|
+
end # class CreateMovieDb
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
def setup_in_memory_db
|
57
|
+
# Database Setup & Config
|
58
|
+
|
59
|
+
db_config = {
|
60
|
+
adapter: 'sqlite3',
|
61
|
+
database: ':memory:'
|
62
|
+
}
|
63
|
+
|
64
|
+
pp db_config
|
65
|
+
|
66
|
+
ActiveRecord::Base.logger = Logger.new( STDOUT )
|
67
|
+
## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
|
68
|
+
|
69
|
+
## NB: every connect will create a new empty in memory db
|
70
|
+
ActiveRecord::Base.establish_connection( db_config )
|
71
|
+
|
72
|
+
|
73
|
+
## build schema
|
74
|
+
|
75
|
+
LogDb.create
|
76
|
+
TagDb.create
|
77
|
+
CreateMovieDb.new.up
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
setup_in_memory_db()
|
data/test/test_models.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestModels < MiniTest::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
TagDb.delete!
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_count
|
12
|
+
assert_equal 0, Tag.count
|
13
|
+
assert_equal 0, Tagging.count
|
14
|
+
assert_equal 0, Movie.count
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_assocs
|
18
|
+
tag = Tag.new( key: 'key', name: 'name' )
|
19
|
+
assert_equal 0, tag.taggings.count
|
20
|
+
|
21
|
+
movie = Movie.new( key: 'key', name: 'name' )
|
22
|
+
assert_equal 0, movie.taggings.count
|
23
|
+
assert_equal 0, movie.tags.count
|
24
|
+
|
25
|
+
tag.save!
|
26
|
+
movie.save!
|
27
|
+
|
28
|
+
assert_equal 0, tag.taggings.count
|
29
|
+
|
30
|
+
assert_equal 0, movie.taggings.count
|
31
|
+
assert_equal 0, movie.tags.count
|
32
|
+
|
33
|
+
## note: add tag; op << will auto-save
|
34
|
+
movie.tags << tag
|
35
|
+
|
36
|
+
assert_equal 1, tag.taggings.count
|
37
|
+
assert_equal 1, movie.taggings.count
|
38
|
+
assert_equal 1, movie.tags.count
|
39
|
+
end
|
40
|
+
|
41
|
+
end # class TestModels
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tagutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,20 +11,31 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2014-03-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activerecord
|
16
|
+
requirement: &72493260 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *72493260
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: logutils
|
16
|
-
requirement: &
|
27
|
+
requirement: &72492220 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ! '>='
|
20
31
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0.
|
32
|
+
version: '0.6'
|
22
33
|
type: :runtime
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *72492220
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rdoc
|
27
|
-
requirement: &
|
38
|
+
requirement: &72582430 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: '3.10'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *72582430
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: hoe
|
38
|
-
requirement: &
|
49
|
+
requirement: &72582120 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ~>
|
@@ -43,9 +54,9 @@ dependencies:
|
|
43
54
|
version: '3.3'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *72582120
|
47
58
|
description: tagutils - tag utilities (tag, taggings, tag list, etc.)
|
48
|
-
email:
|
59
|
+
email: openmundi@googlegroups.com
|
49
60
|
executables: []
|
50
61
|
extensions: []
|
51
62
|
extra_rdoc_files:
|
@@ -56,9 +67,14 @@ files:
|
|
56
67
|
- README.md
|
57
68
|
- Rakefile
|
58
69
|
- lib/tagutils.rb
|
59
|
-
- lib/tagutils/
|
70
|
+
- lib/tagutils/active_record.rb
|
71
|
+
- lib/tagutils/models/tag.rb
|
72
|
+
- lib/tagutils/models/tagging.rb
|
60
73
|
- lib/tagutils/schema.rb
|
61
74
|
- lib/tagutils/version.rb
|
75
|
+
- test/helper.rb
|
76
|
+
- test/test_models.rb
|
77
|
+
- .gemtest
|
62
78
|
homepage: https://github.com/rubylibs/tagutils
|
63
79
|
licenses:
|
64
80
|
- Public Domain
|
@@ -86,4 +102,5 @@ rubygems_version: 1.8.17
|
|
86
102
|
signing_key:
|
87
103
|
specification_version: 3
|
88
104
|
summary: tagutils - tag utilities (tag, taggings, tag list, etc.)
|
89
|
-
test_files:
|
105
|
+
test_files:
|
106
|
+
- test/test_models.rb
|
data/lib/tagutils/models.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module TagDb
|
4
|
-
module Model
|
5
|
-
|
6
|
-
|
7
|
-
class Tag < ActiveRecord::Base
|
8
|
-
|
9
|
-
###########################################################################3
|
10
|
-
# alias for name (remove! add depreciated api call) ?? why? why not??
|
11
|
-
def title() name; end
|
12
|
-
def title=(value) self.name = value; end
|
13
|
-
|
14
|
-
end # class Tag
|
15
|
-
|
16
|
-
|
17
|
-
class Tagging < ActiveRecord::Base
|
18
|
-
# add code here
|
19
|
-
end # class Tagging
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end # module Model
|
24
|
-
|
25
|
-
##### add convenience module alias in plural e.g. lets you use include TagDb::Models
|
26
|
-
Models = Model
|
27
|
-
|
28
|
-
end # module TagDb
|