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.
File without changes
@@ -1,6 +1,8 @@
1
- History.md
1
+ HISTORY.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
5
  lib/tagutils.rb
6
+ lib/tagutils/models.rb
7
+ lib/tagutils/schema.rb
6
8
  lib/tagutils/version.rb
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
- TBD
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
@@ -15,7 +15,7 @@ Hoe.spec 'tagutils' do
15
15
 
16
16
  # switch extension to .markdown for gihub formatting
17
17
  self.readme_file = 'README.md'
18
- self.history_file = 'History.md'
18
+ self.history_file = 'HISTORY.md'
19
19
 
20
20
  self.extra_deps = [
21
21
  ['logutils', '>= 0.5']
@@ -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 #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
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
@@ -1,4 +1,5 @@
1
1
 
2
2
  module TagUtils
3
- VERSION = '0.0.1'
3
+ VERSION = '0.1.0'
4
4
  end
5
+
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.1
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: 2013-09-19 00:00:00.000000000 Z
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: &71336840 !ruby/object:Gem::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: *71336840
24
+ version_requirements: *74247220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &71335620 !ruby/object:Gem::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: *71335620
35
+ version_requirements: *74246900
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: hoe
38
- requirement: &71335150 !ruby/object:Gem::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: *71335150
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
- - History.md
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: