tagutils 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: