acts-as-taggable-hstore 0.0.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/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ *.log
2
+ *.sqlite3
3
+ /pkg/*
4
+ .bundle
5
+ .rvmrc
6
+ Gemfile.lock
7
+ spec/database.yml
8
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --backtrace
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+ gem 'activerecord-postgres-hstore-core', "~> 0.0.4"
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Jt Gleason
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,61 @@
1
+ = ActsAsTaggableHstore
2
+
3
+ This plugin uses the semantics from ActsAsTaggableOn but uses Hstore to implement the tags. This limits this gem to Postgres databases.
4
+
5
+ It has a generator for adding the tag column to an existing table. Then you can include the acts_as_taggable_hstore method on the class and
6
+ everything is added as you would expect.
7
+
8
+ == Installation
9
+
10
+ === Rails 3.x
11
+
12
+ To use it, add it to your Gemfile:
13
+ gem 'acts-as-taggable-hstore' , '~> 0.1.1'
14
+
15
+ ==== Post Installation
16
+
17
+ Each table needs to be modified in order for this to work. Run
18
+
19
+ 1. rails generate acts_as_taggable_hstore:migration TABLENAME
20
+ 2. rake db:migrate
21
+
22
+ == Testing
23
+
24
+ Acts as Taggable Hstore uses Rspec tests. You can run the usual rake task to test it.
25
+
26
+ rake spec
27
+
28
+ == Usage
29
+
30
+ First, run the migration for the particular table you want to be taggable. Then
31
+
32
+ class Video < ActiveRecord::Base
33
+ acts_as_taggable
34
+ end
35
+
36
+ @video = Video.new()
37
+ @video.tag_list = "starcraft 2,gameplay,mlg"
38
+ @video.save
39
+
40
+ @video.tags # => [<Tag name:"starcraft 2">,<Tag name:"gameplay">,<Tag name:"mlg">]
41
+
42
+ === Finding Tagged Objects
43
+
44
+ Acts as Taggable On uses scopes to create associations for tags. It should work with will_paginate as well:
45
+
46
+ Video.tagged_vith("starcraft 2")
47
+
48
+ #Find a video with all matching tags
49
+
50
+ Video.tagged_with(["starcraft 2","mlg"], :match_all => true)
51
+
52
+ #Find a video with any matching tags
53
+ Video.tagged_with(["starcraft 2","mlg"], :any => true)
54
+
55
+ #Find videos with no matching tags
56
+ Video.tagged_with(["starcraft 2","mlg"], :exclude => true)
57
+
58
+ == Help
59
+
60
+ == License
61
+ Copyright @ 2012 Jt Gleason MIT License
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup :default, :development
4
+
5
+ desc 'Default: run specs'
6
+ task :default => :spec
7
+
8
+ require 'rspec/core/rake_task'
9
+ RSpec::Core::RakeTask.new do |t|
10
+ t.pattern = "spec/**/*_spec.rb"
11
+ end
12
+
13
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,28 @@
1
+ $:.push File.dirname(__FILE__) + '/lib'
2
+ require 'acts-as-taggable-hstore/version'
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = %q{acts-as-taggable-hstore}
6
+ gem.authors = ["Jt Gleason"]
7
+ gem.date = %q{2012-02-29}
8
+ gem.description = %q{With ActsAsTaggableHstore, you can tag a single model that uses postgres hstore type}
9
+ gem.summary = "Basic postgres hstore tagging for Rails."
10
+ gem.email = %q{jt@twitch.tv}
11
+ gem.homepage = ''
12
+
13
+ gem.add_runtime_dependency 'rails', '~> 3.0'
14
+ gem.add_runtime_dependency 'activerecord-postgres-hstore-core', "~> 0.0.4"
15
+ gem.add_development_dependency 'rspec', '~> 2.6'
16
+ gem.add_development_dependency 'ammeter', '~> 0.1.3'
17
+ gem.add_development_dependency 'pg'
18
+ gem.add_development_dependency 'guard'
19
+ gem.add_development_dependency 'guard-rspec'
20
+
21
+
22
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ gem.files = `git ls-files`.split("\n")
24
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ gem.name = "acts-as-taggable-hstore"
26
+ gem.require_paths = ['lib']
27
+ gem.version = ActsAsTaggableHstore::VERSION
28
+ end
@@ -0,0 +1,3 @@
1
+ module ActsAsTaggableHstore
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,36 @@
1
+ require "active_record"
2
+ require "active_record/version"
3
+ require "activerecord-postgres-hstore-core"
4
+
5
+ require "action_view"
6
+ require "digest/sha1"
7
+
8
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
9
+
10
+ module ActsAsTaggableHstore
11
+ mattr_accessor :delimiter
12
+ @@delimiter = ','
13
+
14
+ mattr_accessor :force_lowercase
15
+ @@force_lowercase = false
16
+
17
+ mattr_accessor :default_column
18
+ @@default_column = :tag_hstore
19
+
20
+ def self.glue
21
+ @@delimiter.ends_with?(" ") ? @@delimiter : "#{@@delimiter} "
22
+ end
23
+
24
+ def self.setup
25
+ yield self
26
+ end
27
+ end
28
+
29
+ require "acts_as_taggable_hstore/taggable"
30
+ require "acts_as_taggable_hstore/acts_as_taggable_hstore/core"
31
+
32
+ $LOAD_PATH.shift
33
+
34
+ if defined?(ActiveRecord::Base)
35
+ ActiveRecord::Base.extend ActsAsTaggableHstore::Taggable
36
+ end
@@ -0,0 +1,65 @@
1
+ module ActsAsTaggableHstore::Taggable
2
+ module Core
3
+ def self.included(base)
4
+ base.send :include, ActsAsTaggableHstore::Taggable::Core::InstanceMethods
5
+ base.extend ActsAsTaggableHstore::Taggable::Core::ClassMethods
6
+
7
+ # base.class_eval do
8
+ # class_attribute :hstore_column
9
+ # end
10
+ end
11
+
12
+ module ClassMethods
13
+ #allow inheritence
14
+ def acts_as_taggable_hstore_by(*args)
15
+ super(*args)
16
+ end
17
+
18
+ def tagged_with(tag_list, options= {})
19
+ empty_result = scoped(:conditions => "1 = 0")
20
+ return empty_result if tag_list.blank?
21
+
22
+ if tag_list.is_a? String
23
+ tag_list = [tag_list]
24
+ end
25
+
26
+ connect_with = " AND "
27
+ if options.delete(:any)
28
+ connect_with = " OR "
29
+ end
30
+
31
+ conditions = []
32
+ tag_list.each do |tag_name|
33
+ conditions << self.tag_hstore_column.to_s + " ? '#{tag_name}' "
34
+ end
35
+
36
+ return where(conditions.join(connect_with))
37
+
38
+ end
39
+
40
+ end
41
+
42
+ module InstanceMethods
43
+
44
+ def tag_list
45
+ hstore_result = self.send(self.class.tag_hstore_column)
46
+
47
+ if hstore_result.nil?
48
+ return []
49
+ end
50
+
51
+ return hstore_result.keys.join(ActsAsTaggableHstore.glue)
52
+ end
53
+
54
+ def tag_list=(tags)
55
+ prep_hstore = tags.split(ActsAsTaggableHstore.delimiter).map(&:strip).inject({}) { |h,k| h[k] = nil; h }
56
+ self.send(self.class.tag_hstore_column.to_s + "=", prep_hstore)
57
+ end
58
+
59
+ def tags
60
+ tag_hstore.keys
61
+ end
62
+
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,23 @@
1
+ module ActsAsTaggableHstore
2
+ module Taggable
3
+ def taggable?
4
+ false
5
+ end
6
+ def acts_as_taggable_hstore
7
+ acts_as_taggable_hstore_by ActsAsTaggableHstore.default_column
8
+ end
9
+
10
+ def acts_as_taggable_hstore_by(*column_name)
11
+
12
+ class_attribute :tag_hstore_column
13
+ self.tag_hstore_column = column_name.first
14
+
15
+ class_eval do
16
+ def self.taggable?
17
+ true
18
+ end
19
+ include ActsAsTaggableHstore::Taggable::Core
20
+ end
21
+ end
22
+ end
23
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'acts-as-taggable-hstore'
@@ -0,0 +1,48 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "Acts As Taggable Hstore" do
4
+ before(:each) do
5
+ clean_database!
6
+ end
7
+
8
+ it "should provide a class method 'taggable?' that is false for untaggable models" do
9
+ UntaggableModel.should_not be_taggable
10
+ end
11
+
12
+ describe "Taggable Method Generation" do
13
+ before(:each) do
14
+ clean_database!
15
+ @taggable = TaggableModel.new(:name => "Bob Jones")
16
+ end
17
+
18
+ it "should respond 'true' to taggable?" do
19
+ @taggable.class.should be_taggable
20
+ end
21
+
22
+ it "should generate a tag_list accessor/setter for each tag type" do
23
+ @taggable.should respond_to(:tag_list)
24
+ @taggable.should respond_to(:tag_list=)
25
+ end
26
+
27
+ it "should have a hstore sql type" do
28
+ @taggable.class.columns_hash[@taggable.class.tag_hstore_column.to_s].sql_type.should == "hstore"
29
+ end
30
+
31
+ it "should make strings have valid_hstore" do
32
+ "bob".valid_hstore?.should == false
33
+ end
34
+
35
+ it "should have a hstore column type" do
36
+ @taggable.class.columns_hash[@taggable.class.tag_hstore_column.to_s].type.should == :hstore
37
+ end
38
+
39
+ end
40
+
41
+ describe "Reloading" do
42
+ it "should save a model instantiated by Model.find" do
43
+ taggable = TaggableModel.create!(:name => "Taggable")
44
+ found_taggable = TaggableModel.find(taggable.id)
45
+ found_taggable.save
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,66 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "Taggable" do
4
+ before(:each) do
5
+ clean_database!
6
+ @taggable = TaggableModel.new(:name => "Bob Jones")
7
+ @taggables = [@taggable, TaggableModel.new(:name => "John Doe")]
8
+ end
9
+
10
+ it "should return [] right after new" do
11
+ blank_taggable = TaggableModel.new(:name => "Bob Jones")
12
+ blank_taggable.tag_list.should == []
13
+ end
14
+
15
+ it "should return [] right after create" do
16
+ blank_taggable = TaggableModel.create(:name => "Bob Jones")
17
+ blank_taggable.tag_list.should == []
18
+ end
19
+
20
+ it "should be able to remove tags through list alone" do
21
+ @taggable.tag_list = "ruby, rails, css"
22
+ @taggable.save
23
+
24
+ @taggable.reload
25
+ @taggable.should have(3).tags
26
+ @taggable.tag_list = "ruby, rails"
27
+ @taggable.save
28
+ @taggable.reload
29
+ @taggable.should have(2).tags
30
+ end
31
+
32
+ it "should be able to find by tag" do
33
+ @taggable.tag_list = "ruby, rails, css"
34
+ @taggable.save
35
+
36
+ TaggableModel.tagged_with("ruby").first.should == @taggable
37
+ end
38
+
39
+ it "should not return read-only records" do
40
+ TaggableModel.create(:name => "Bob", :tag_list => "ruby, rails, css")
41
+ TaggableModel.tagged_with("ruby").first.should_not be_readonly
42
+ end
43
+
44
+ it "should be able to find tagged with only the matching tags" do
45
+ bob = TaggableModel.create(:name => "Bob", :tag_list => "lazy, happier")
46
+ frank = TaggableModel.create(:name => "Frank", :tag_list => "fitter, happier, inefficient")
47
+ steve = TaggableModel.create(:name => 'Steve', :tag_list => "fitter, happier")
48
+
49
+ TaggableModel.tagged_with(["fitter", "happier"]).to_a.sort.should == [steve,frank].sort
50
+ end
51
+
52
+ # it "should be able to find tagged with some excluded tags" do
53
+ # bob = TaggableModel.create(:name => "Bob", :tag_list => "happier, lazy")
54
+ # frank = TaggableModel.create(:name => "Frank", :tag_list => "happier")
55
+ # steve = TaggableModel.create(:name => 'Steve', :tag_list => "happier")
56
+
57
+ # TaggableModel.tagged_with("lazy", :exclude => true).to_a.should == [frank, steve]
58
+ # end
59
+
60
+ it "should return an empty scope for empty tags" do
61
+ TaggableModel.tagged_with('').should == []
62
+ TaggableModel.tagged_with(' ').should == []
63
+ TaggableModel.tagged_with(nil).should == []
64
+ TaggableModel.tagged_with([]).should == []
65
+ end
66
+ end
@@ -0,0 +1,7 @@
1
+ postgresql:
2
+ adapter: postgresql
3
+ hostname: localhost
4
+ username: postgres
5
+ password:
6
+ database: acts_as_taggable_hstore
7
+ encoding: utf8
data/spec/models.rb ADDED
@@ -0,0 +1,6 @@
1
+ class TaggableModel < ActiveRecord::Base
2
+ acts_as_taggable_hstore
3
+ end
4
+
5
+ class UntaggableModel < ActiveRecord::Base
6
+ end
data/spec/schema.rb ADDED
@@ -0,0 +1,16 @@
1
+ ActiveRecord::Schema.define :version => 0 do
2
+
3
+ create_table :taggable_models, :force => true do |t|
4
+ t.column :name, :string
5
+ t.column :type, :string
6
+ end
7
+
8
+ add_column :taggable_models, :tag_hstore, :hstore
9
+
10
+ execute "create index concurrently idx_tag_model_tag_hstore on taggable_models using gist (tag_hstore)"
11
+
12
+ create_table :untaggable_models, :force => true do |t|
13
+ t.column :name, :string
14
+ end
15
+
16
+ end
@@ -0,0 +1,60 @@
1
+ $LOAD_PATH << "." unless $LOAD_PATH.include?(".")
2
+ require 'logger'
3
+
4
+ begin
5
+ require "rubygems"
6
+ require "bundler"
7
+ if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.5")
8
+ raise RuntimeError, "Your bundler version is too old." +
9
+ "Run `gem install bundler` to upgrade."
10
+ end
11
+
12
+ # Set up load paths for all bundled gems
13
+ Bundler.setup
14
+ rescue Bundler::GemNotFound
15
+ raise RuntimeError, "Bundler couldn't find some gems." +
16
+ "Did you run \`bundlee install\`?"
17
+ end
18
+
19
+ Bundler.require
20
+ require File.expand_path('../../lib/acts-as-taggable-hstore', __FILE__)
21
+ #require "activerecord-postgres-hstore-core"
22
+ db_name = 'postgresql'
23
+ database_yml = File.expand_path('../database.yml', __FILE__)
24
+
25
+ if File.exists?(database_yml)
26
+ active_record_configuration = YAML.load_file(database_yml)
27
+
28
+ ActiveRecord::Base.configurations = active_record_configuration
29
+ config = ActiveRecord::Base.configurations[db_name]
30
+
31
+ begin
32
+ ActiveRecord::Base.establish_connection(db_name)
33
+ ActiveRecord::Base.connection
34
+ rescue
35
+ ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
36
+ ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => 'utf8'))
37
+ end
38
+
39
+ ActiveRecord::Base.establish_connection(config)
40
+ ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), "debug.log"))
41
+ ActiveRecord::Base.default_timezone = :utc
42
+
43
+ ActiveRecord::Base.silence do
44
+ ActiveRecord::Migration.verbose = false
45
+
46
+ load(File.dirname(__FILE__) + '/schema.rb')
47
+ load(File.dirname(__FILE__) + '/models.rb')
48
+ end
49
+ else
50
+ raise "Please create #{database_yml} first to configure your database. Take a look at: #{database_yml}.sample"
51
+ end
52
+
53
+ def clean_database!
54
+ models = [TaggableModel, UntaggableModel]
55
+ models.each do |model|
56
+ ActiveRecord::Base.connection.execute "DELETE FROM #{model.table_name}"
57
+ end
58
+ end
59
+
60
+ clean_database!
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts-as-taggable-hstore
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Jt Gleason
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-02-29 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rails
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 7
29
+ segments:
30
+ - 3
31
+ - 0
32
+ version: "3.0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: activerecord-postgres-hstore-core
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 23
44
+ segments:
45
+ - 0
46
+ - 0
47
+ - 4
48
+ version: 0.0.4
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rspec
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 15
60
+ segments:
61
+ - 2
62
+ - 6
63
+ version: "2.6"
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: ammeter
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ hash: 29
75
+ segments:
76
+ - 0
77
+ - 1
78
+ - 3
79
+ version: 0.1.3
80
+ type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: pg
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ type: :development
95
+ version_requirements: *id005
96
+ - !ruby/object:Gem::Dependency
97
+ name: guard
98
+ prerelease: false
99
+ requirement: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ type: :development
109
+ version_requirements: *id006
110
+ - !ruby/object:Gem::Dependency
111
+ name: guard-rspec
112
+ prerelease: false
113
+ requirement: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ type: :development
123
+ version_requirements: *id007
124
+ description: With ActsAsTaggableHstore, you can tag a single model that uses postgres hstore type
125
+ email: jt@twitch.tv
126
+ executables: []
127
+
128
+ extensions: []
129
+
130
+ extra_rdoc_files: []
131
+
132
+ files:
133
+ - .gitignore
134
+ - .rspec
135
+ - Gemfile
136
+ - LICENSE
137
+ - README.rdoc
138
+ - Rakefile
139
+ - acts-as-taggable-hstore.gemspec
140
+ - lib/acts-as-taggable-hstore.rb
141
+ - lib/acts-as-taggable-hstore/version.rb
142
+ - lib/acts_as_taggable_hstore/acts_as_taggable_hstore/core.rb
143
+ - lib/acts_as_taggable_hstore/taggable.rb
144
+ - rails/init.rb
145
+ - spec/acts_as_taggable_hstore/acts_as_taggable_hstore_spec.rb
146
+ - spec/acts_as_taggable_hstore/taggable_spec.rb
147
+ - spec/database.yml.sample
148
+ - spec/models.rb
149
+ - spec/schema.rb
150
+ - spec/spec_helper.rb
151
+ homepage: ""
152
+ licenses: []
153
+
154
+ post_install_message:
155
+ rdoc_options: []
156
+
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ hash: 3
165
+ segments:
166
+ - 0
167
+ version: "0"
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ hash: 3
174
+ segments:
175
+ - 0
176
+ version: "0"
177
+ requirements: []
178
+
179
+ rubyforge_project:
180
+ rubygems_version: 1.8.6
181
+ signing_key:
182
+ specification_version: 3
183
+ summary: Basic postgres hstore tagging for Rails.
184
+ test_files:
185
+ - spec/acts_as_taggable_hstore/acts_as_taggable_hstore_spec.rb
186
+ - spec/acts_as_taggable_hstore/taggable_spec.rb
187
+ - spec/database.yml.sample
188
+ - spec/models.rb
189
+ - spec/schema.rb
190
+ - spec/spec_helper.rb