tag_ramaprasad 0.0.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ac0d6f2a4cc4eefa89ffd365a6ab500fdcf3aa0ab267b850418dfaf50030e27
4
- data.tar.gz: 70aa4fb3224f2e8d1438de563560ed5cbac35df459e1fad6bec6a3905cdace6c
3
+ metadata.gz: 5526b09bfd902ca3080ccb043d6e769e3f18f4cb2efedbee4f6b8a5fc49337d0
4
+ data.tar.gz: bc46e7986a8b1a50d7852e65139de1b940ee444337fce6d353b3bd6300e58b2f
5
5
  SHA512:
6
- metadata.gz: e98c87303d13d24df568c793848cc92a5c705d847abc0dea479df198065a45cb6947a6d474f8248a8bf4744adf3d370d978b9d17b11d7081c58fa56975040ac0
7
- data.tar.gz: bdd1c08399317ab8cfce526401af859a3e69159ddc0802893ab89c4a05d871f1e29f8998b18db2d8eb5d1e9a31b36ee2bb97af080ccdff51e7bc5f190881574e
6
+ metadata.gz: ca02e845305fa593f140479b7369950ed65d2f0597e5b9f29f461536810a6d628ab6816c0ad111e292d660d24710949ca958d4202d212eecf30f15b39b8917d6
7
+ data.tar.gz: 948cb4e3991f2cf0b8290fbe54dc2aa7b88defa84cafc15e96a61fb72e5d1c22999df22ac426bc4165da2494ebe6052f80f3656ebce7a12264b6c7f5a5c40c3e
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ Gemfile.lock
2
+ spec/internal/db/*.sqlite
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,6 @@
1
+ class TagRamaprasad::Tag < ActiveRecord::Base
2
+ has_many :taggings, :class_name => 'TagRamaprasad::Tagging',
3
+ :dependent => :destroy
4
+
5
+ validates :name, :presence => true, :uniqueness => true
6
+ end
@@ -0,0 +1,7 @@
1
+ class TagRamaprasad::Tagging < ActiveRecord::Base
2
+ belongs_to :taggable, :polymorphic => true
3
+ belongs_to :tag, :class_name => 'TagRamaprasad::Tag'
4
+
5
+ validates :taggable, :presence => true
6
+ validates :tag, :presence => true
7
+ end
@@ -0,0 +1,27 @@
1
+ class TagTables < ActiveRecord::Migration
2
+ def up
3
+ create_table :taggings do |t|
4
+ t.integer :tag_id, :null => false
5
+ t.integer :taggable_id, :null => false
6
+ t.string :taggable_type, :null => false
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :taggings, :tag_id
11
+ add_index :taggings, [:taggable_type, :taggable_id]
12
+ add_index :taggings, [:taggable_type, :taggable_id, :tag_id],
13
+ :unique => true, :name => 'unique_taggings'
14
+
15
+ create_table :tags do |t|
16
+ t.string :name, :null => false
17
+ t.timestamps
18
+ end
19
+
20
+ add_index :tags, :name, :unique => true
21
+ end
22
+
23
+ def down
24
+ drop_table :tags
25
+ drop_table :taggings
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ # Declare our top level module
2
+ module TagRamaprasad
3
+ #
4
+ end
5
+
6
+ # Require the rest of the gem's files
7
+ require 'tag_ramaprasad/active_record'
8
+ require 'tag_ramaprasad/engine'
@@ -0,0 +1,16 @@
1
+ module TagRamaprasad::ActiveRecord
2
+ def self.included(base)
3
+ # include our class methods
4
+ base.extend TagRamaprasad::ActiveRecord::ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ # Set up the underlying tag associations in the model
9
+ def has_many_tags
10
+ has_many :taggings, :class_name => 'TagRamaprasad::Tagging',
11
+ :as => :taggable, :dependent => :destroy
12
+ has_many :tags, :class_name => 'TagRamaprasad::Tag',
13
+ :through => :taggings
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ require 'rails/engine'
2
+
3
+ class TagRamaprasad::Engine < Rails::Engine
4
+ # set our engine name
5
+ engine_name :tag_ramaprasad
6
+
7
+ ActiveSupport.on_load :active_record do
8
+ # this is run when Rails loads ActiveRecord, and is
9
+ # within the context of ActiveRecord::Base.
10
+ include TagRamaprasad::ActiveRecord
11
+ end
12
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Adding and removing tags' do
4
+ let(:article) { Article.create }
5
+ let(:pancakes) { TagRamaprasad::Tag.create :name => 'pancakes' }
6
+
7
+ it "stores new tags" do
8
+ article.tags << pancakes
9
+
10
+ article.tags.reload.should == [pancakes]
11
+ end
12
+
13
+ it "removes existing tags" do
14
+ article.tags << pancakes
15
+
16
+ article.tags.delete pancakes
17
+
18
+ article.tags.reload.should == []
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ class Article < ActiveRecord::Base
2
+ has_many_tags
3
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/combustion_test.sqlite
@@ -0,0 +1,6 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :articles, :force => true do |t|
3
+ t.string :title
4
+ t.timestamps
5
+ end
6
+ end
@@ -0,0 +1 @@
1
+ *.log
@@ -0,0 +1,11 @@
1
+ require 'bundler'
2
+
3
+ Bundler.require :default, :development
4
+
5
+ Combustion.initialize! :active_record
6
+
7
+ require 'rspec/rails'
8
+
9
+ RSpec.configure do |config|
10
+ config.use_transactional_fixtures = true
11
+ end
Binary file
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'tag_ramaprasad'
4
- s.version = '0.0.1'
4
+ s.version = '1.0.1'
5
5
  s.authors = ['Rama Prasad']
6
6
  s.email = ['link2prasad@gmail.com']
7
7
  s.homepage = 'https://github.com/link2prasad/tag_ramaprasad'
@@ -11,4 +11,8 @@ Gem::Specification.new do |s|
11
11
  s.files = `git ls-files`.split("\n")
12
12
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
13
13
  s.require_paths = ['lib']
14
+ s.add_runtime_dependency 'activerecord'
15
+ s.add_development_dependency 'combustion'
16
+ s.add_development_dependency 'rspec-rails'
17
+ s.add_development_dependency 'sqlite3'
14
18
  end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tag_ramaprasad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rama Prasad
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-26 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: combustion
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
13
69
  description: This friendly ramaprasad gives you tags in your Rails app.
14
70
  email:
15
71
  - link2prasad@gmail.com
@@ -17,7 +73,21 @@ executables: []
17
73
  extensions: []
18
74
  extra_rdoc_files: []
19
75
  files:
76
+ - ".gitignore"
77
+ - Gemfile
78
+ - app/models/tag_ramaprasad/tag.rb
79
+ - app/models/tag_ramaprasad/tagging.rb
80
+ - db/migrate/1_tag_tables.rb
20
81
  - lib/tag_ramaprasad.rb
82
+ - lib/tag_ramaprasad/active_record.rb
83
+ - lib/tag_ramaprasad/engine.rb
84
+ - spec/acceptance/tags_spec.rb
85
+ - spec/internal/app/models/article.rb
86
+ - spec/internal/config/database.yml
87
+ - spec/internal/db/schema.rb
88
+ - spec/internal/log/.gitignore
89
+ - spec/spec_helper.rb
90
+ - tag_ramaprasad-0.0.1.gem
21
91
  - tag_ramaprasad.gemspec
22
92
  homepage: https://github.com/link2prasad/tag_ramaprasad
23
93
  licenses: []