tagutils 0.0.1 → 0.1.0
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/{History.md → HISTORY.md} +0 -0
- data/Manifest.txt +3 -1
- data/README.md +110 -1
- data/Rakefile +1 -1
- data/lib/tagutils.rb +36 -3
- data/lib/tagutils/models.rb +28 -0
- data/lib/tagutils/schema.rb +37 -0
- data/lib/tagutils/version.rb +2 -1
- metadata +11 -9
data/{History.md → HISTORY.md}
RENAMED
File without changes
|
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -11,9 +11,118 @@ tagutils gems - tag utilities (tag, taggings, tag list, etc.)
|
|
11
11
|
|
12
12
|
TBD
|
13
13
|
|
14
|
+
|
15
|
+
## Real World Usage
|
16
|
+
|
17
|
+
- [worlddb gem](http://rubygems.org/gems/worlddb) - continent, country, region, metro, city, district etc. models
|
18
|
+
- [winedb gem](http://rubygems.org/gems/winedb) - wine, winery, winemaker, vineyards, etc. models
|
19
|
+
- [beerdb gem](http://rubygems.org/gems/beerdb) - beer, brand, brewery, etc. models
|
20
|
+
|
21
|
+
|
14
22
|
## Alternatives
|
15
23
|
|
16
|
-
|
24
|
+
- [acts_as_taggable_on](https://github.com/mbleigh/acts-as-taggable-on)
|
25
|
+
|
26
|
+
~~~
|
27
|
+
create_table :tags do |t|
|
28
|
+
t.string :name
|
29
|
+
end
|
30
|
+
|
31
|
+
create_table :taggings do |t|
|
32
|
+
t.references :tag
|
33
|
+
t.references :taggable, :polymorphic => true
|
34
|
+
t.references :tagger, :polymorphic => true
|
35
|
+
t.string :context, :limit => 128
|
36
|
+
t.datetime :created_at
|
37
|
+
end
|
38
|
+
~~~
|
39
|
+
|
40
|
+
(Source: [db/migrate/1_acts_as_taggable_on_migration.rb](https://github.com/mbleigh/acts-as-taggable-on/blob/master/db/migrate/1_acts_as_taggable_on_migration.rb))
|
41
|
+
|
42
|
+
|
43
|
+
- [is_taggable](https://github.com/jamesgolick/is_taggable)
|
44
|
+
|
45
|
+
~~~
|
46
|
+
create_table :tags do |t|
|
47
|
+
t.string :name, :default => ''
|
48
|
+
t.string :kind, :default => ''
|
49
|
+
end
|
50
|
+
|
51
|
+
create_table :taggings do |t|
|
52
|
+
t.integer :tag_id
|
53
|
+
|
54
|
+
t.string :taggable_type, :default => ''
|
55
|
+
t.integer :taggable_id
|
56
|
+
end
|
57
|
+
~~~
|
58
|
+
|
59
|
+
(Source: [generators/is_taggable_migration/templates/migration.rb](https://github.com/jamesgolick/is_taggable/blob/master/generators/is_taggable_migration/templates/migration.rb))
|
60
|
+
|
61
|
+
- [rocket_tag](https://github.com/bradphelan/rocket_tag)
|
62
|
+
|
63
|
+
~~~
|
64
|
+
create_table :tags do |t|
|
65
|
+
t.string :name
|
66
|
+
end
|
67
|
+
|
68
|
+
create_table :taggings do |t|
|
69
|
+
t.references :tag
|
70
|
+
t.references :taggable, :polymorphic => true
|
71
|
+
t.references :tagger, :polymorphic => true
|
72
|
+
t.string :context
|
73
|
+
t.datetime :created_at
|
74
|
+
end
|
75
|
+
|
76
|
+
create_table :alias_tags, :id => false do |t|
|
77
|
+
t.integer :tag_id
|
78
|
+
t.integer :alias_id
|
79
|
+
end
|
80
|
+
~~~
|
81
|
+
|
82
|
+
(Source: [generators/rocket_tag/migration/templates/active_record/migration.rb](https://github.com/bradphelan/rocket_tag/blob/master/lib/generators/rocket_tag/migration/templates/active_record/migration.rb))
|
83
|
+
|
84
|
+
|
85
|
+
- [acts_as_taggable_redux](https://github.com/geemus/acts_as_taggable_redux)
|
86
|
+
|
87
|
+
~~~
|
88
|
+
create_table :tags do |t|
|
89
|
+
t.column :name, :string
|
90
|
+
t.column :taggings_count, :integer, :default => 0, :null => false
|
91
|
+
end
|
92
|
+
|
93
|
+
create_table :taggings do |t|
|
94
|
+
t.column :tag_id, :integer
|
95
|
+
t.column :taggable_id, :integer
|
96
|
+
t.column :taggable_type, :string
|
97
|
+
t.column :user_id, :integer
|
98
|
+
end
|
99
|
+
~~~
|
100
|
+
|
101
|
+
(Source: [generators/acts_as_taggable_tables/templates/migration.rb](https://github.com/geemus/acts_as_taggable_redux/blob/master/generators/acts_as_taggable_tables/templates/migration.rb))
|
102
|
+
|
103
|
+
|
104
|
+
- [acts_as_taggable_on_steroids](https://github.com/mattetti/acts_as_taggable_on_steroids)
|
105
|
+
|
106
|
+
~~~
|
107
|
+
create_table :tags do |t|
|
108
|
+
t.column :name, :string
|
109
|
+
end
|
110
|
+
|
111
|
+
create_table :taggings do |t|
|
112
|
+
t.column :tag_id, :integer
|
113
|
+
t.column :taggable_id, :integer
|
114
|
+
t.column :taggable_type, :string
|
115
|
+
|
116
|
+
t.column :created_at, :datetime
|
117
|
+
end
|
118
|
+
~~~
|
119
|
+
|
120
|
+
(Source: [generators/acts_as_taggable_migration/templates/migration.rb](https://github.com/mattetti/acts_as_taggable_on_steroids/blob/master/generators/acts_as_taggable_migration/templates/migration.rb))
|
121
|
+
|
122
|
+
|
123
|
+
- [Ruby Toolbook - Rails Tagging Category](https://www.ruby-toolbox.com/categories/rails_tagging)
|
124
|
+
|
125
|
+
|
17
126
|
|
18
127
|
## License
|
19
128
|
|
data/Rakefile
CHANGED
data/lib/tagutils.rb
CHANGED
@@ -1,22 +1,55 @@
|
|
1
1
|
|
2
|
+
# 3rd party gems / libs
|
3
|
+
|
4
|
+
require 'active_record' ## todo: add sqlite3? etc.
|
5
|
+
require 'logutils'
|
6
|
+
|
7
|
+
|
8
|
+
# our own code
|
2
9
|
|
3
10
|
require 'tagutils/version' # let it always go first
|
4
11
|
|
12
|
+
require 'tagutils/schema'
|
13
|
+
require 'tagutils/models'
|
14
|
+
|
5
15
|
|
6
16
|
module TagUtils
|
7
17
|
|
8
18
|
def self.banner
|
9
|
-
"tagutils
|
19
|
+
"tagutils/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
10
20
|
end
|
11
21
|
|
12
|
-
=begin
|
13
22
|
def self.root
|
14
23
|
"#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
|
15
24
|
end
|
16
|
-
=end
|
17
25
|
|
18
26
|
end # module TagUtils
|
19
27
|
|
20
28
|
|
29
|
+
|
30
|
+
module TagDb
|
31
|
+
def self.create
|
32
|
+
CreateDb.new.up
|
33
|
+
## WorldDb::Model::Prop.create!( key: 'db.schema.world.version', value: VERSION )
|
34
|
+
end
|
35
|
+
|
36
|
+
# delete ALL records (use with care!)
|
37
|
+
def self.delete!
|
38
|
+
## fix: use Deleter (see sportdb etc.)
|
39
|
+
puts '*** deleting tag/tagging table records/data...'
|
40
|
+
Model::Tagging.delete_all
|
41
|
+
Model::Tag.delete_all
|
42
|
+
end # method delete!
|
43
|
+
|
44
|
+
def self.tables
|
45
|
+
## fix: use Stats class (see sportdb etc.)
|
46
|
+
puts "#{Model::Tag.count} tags"
|
47
|
+
puts "#{Model::Tagging.count} taggings"
|
48
|
+
end
|
49
|
+
|
50
|
+
end # module TagDb
|
51
|
+
|
52
|
+
|
53
|
+
|
21
54
|
puts TagUtils.banner # say hello
|
22
55
|
|
@@ -0,0 +1,28 @@
|
|
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
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module TagDb
|
4
|
+
|
5
|
+
class CreateDb < ActiveRecord::Migration
|
6
|
+
|
7
|
+
def up
|
8
|
+
|
9
|
+
create_table :tags do |t|
|
10
|
+
t.string :key, null: false
|
11
|
+
t.string :slug, null: false
|
12
|
+
t.string :name # todo: make required? -- note: was title formerly
|
13
|
+
t.integer :grade, null: false, default: 1 # grade/tier e.g. 1/2/3 for now
|
14
|
+
## todo: add parent or similar for hierachy (for tag stacks/packs)
|
15
|
+
t.timestamps # todo: use only t.datetime :created_at (do we get ar magic? is updated used/needed??)
|
16
|
+
end
|
17
|
+
|
18
|
+
add_index :tags, :key, unique: true
|
19
|
+
|
20
|
+
create_table :taggings do |t|
|
21
|
+
t.references :tag, null: false
|
22
|
+
t.references :taggable, polymorphic: true
|
23
|
+
t.timestamps # todo: use only t.datetime :created_at (do we get ar magic? is updated used/needed??)
|
24
|
+
end
|
25
|
+
|
26
|
+
add_index :taggings, :tag_id
|
27
|
+
add_index :taggings, [:taggable_id, :taggable_type]
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def down
|
32
|
+
raise ActiveRecord::IrreversibleMigration
|
33
|
+
end
|
34
|
+
|
35
|
+
end # class CreateDb
|
36
|
+
|
37
|
+
end # module TagDb
|
data/lib/tagutils/version.rb
CHANGED
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.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-03-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: logutils
|
16
|
-
requirement: &
|
16
|
+
requirement: &74247220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *74247220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &74246900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.10'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *74246900
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hoe
|
38
|
-
requirement: &
|
38
|
+
requirement: &74246500 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '3.3'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *74246500
|
47
47
|
description: tagutils - tag utilities (tag, taggings, tag list, etc.)
|
48
48
|
email: webslideshow@googlegroups.com
|
49
49
|
executables: []
|
@@ -51,11 +51,13 @@ extensions: []
|
|
51
51
|
extra_rdoc_files:
|
52
52
|
- Manifest.txt
|
53
53
|
files:
|
54
|
-
-
|
54
|
+
- HISTORY.md
|
55
55
|
- Manifest.txt
|
56
56
|
- README.md
|
57
57
|
- Rakefile
|
58
58
|
- lib/tagutils.rb
|
59
|
+
- lib/tagutils/models.rb
|
60
|
+
- lib/tagutils/schema.rb
|
59
61
|
- lib/tagutils/version.rb
|
60
62
|
homepage: https://github.com/rubylibs/tagutils
|
61
63
|
licenses:
|