gutentag 0.5.1 → 0.6.0

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
  SHA1:
3
- metadata.gz: f6d5be313a5546f19c11c2c5a74b0164665c795e
4
- data.tar.gz: e9dee9503ecbae393676a9d5d897e79b12876236
3
+ metadata.gz: 5caab7c06cc22c8d471dff482d8a0e8697bd9fea
4
+ data.tar.gz: 8402bccf294c70bd31d12e4bf31eda66e4b347db
5
5
  SHA512:
6
- metadata.gz: 5d353d61f4c35f34c56c4545cac40eef7a6a187da84515bcc99c883de01892a01823f746cedf5e7a1f8b26878023fddef5bb4ae09d48c8e262a761968a4324ca
7
- data.tar.gz: d22d8a4f863229adeda019d80919f63fe55adf653e0be3cd813190e529474e9d7b86f247909506debead2ad69a5b940d81fc3954fd3752896563d7b4a13be6ff
6
+ metadata.gz: 6e6370b2e38a4c3d97f5d48e43057cf1890f22cbd059f9ffd7f36a4781c7e9863bb32bbdef3e5c76cf3d5f7c8f4ec5432fc70671080567d95f04018e78c7a3b0
7
+ data.tar.gz: ff1200c35f2076cfdf3182e7b6d65a67707436c806782f9df6bfe363291c75942d634cc6da1599cb14d974dda3c313ab2a98d8f1cec944499c9c4de83b655f0c
data/.gitignore CHANGED
@@ -1,3 +1,3 @@
1
- Gemfile.lock
1
+ *.lock
2
2
  pkg/*
3
3
  spec/internal/db/*.sqlite
@@ -1,5 +1,7 @@
1
1
  language: ruby
2
- script: bundle exec rspec spec
2
+ script: bundle exec appraisal rspec
3
3
  rvm:
4
- - 1.9.3
5
4
  - 2.0.0
5
+ - 2.2.0
6
+ before_script:
7
+ - bundle exec appraisal install
@@ -0,0 +1,15 @@
1
+ appraise 'rails_3_2' do
2
+ gem 'rails', '~> 3.2.21'
3
+ end
4
+
5
+ appraise 'rails_4_0' do
6
+ gem 'rails', '~> 4.0.12'
7
+ end
8
+
9
+ appraise 'rails_4_1' do
10
+ gem 'rails', '~> 4.1.8'
11
+ end
12
+
13
+ appraise 'rails_4_2' do
14
+ gem 'rails', '~> 4.2.0'
15
+ end
data/README.md CHANGED
@@ -12,7 +12,7 @@ This was built partly as a proof-of-concept, and partly to see how a tagging gem
12
12
 
13
13
  Get it into your Gemfile - and don't forget the version constraint!
14
14
 
15
- gem 'gutentag', '~> 0.5.1'
15
+ gem 'gutentag', '~> 0.6.0'
16
16
 
17
17
  Next: your tags get persisted to your database, so let's import and run the migrations to get the tables set up:
18
18
 
@@ -21,6 +21,12 @@ Next: your tags get persisted to your database, so let's import and run the migr
21
21
 
22
22
  ## Upgrading
23
23
 
24
+ ### 0.6.0
25
+
26
+ Rails 4.2 is supported as of Gutentag 0.6.0 - but please note that due to internal changes in ActiveRecord, changes to tag_names will no longer be tracked by your model's dirty state. This feature will continue to work in Rails 3.2 through to 4.1 though.
27
+
28
+ ### 0.5.0
29
+
24
30
  Between 0.4.0 and 0.5.0, Gutentag switched table names from `tags` and `taggings` to `gutentag_tags` and `gutentag_taggings`. This has been done to avoid conflicting with the more generic table names that may exist in Rails apps already.
25
31
 
26
32
  If you were using Gutentag 0.4.0 (or older) and now want to upgrade, you'll need to create a migration manually that renames these tables:
@@ -53,4 +59,4 @@ Changes to tag_names are not persisted immediately - you must save your taggable
53
59
 
54
60
  ## Licence
55
61
 
56
- Copyright (c) 2013, Gutentag is developed and maintained by Pat Allan, and is released under the open MIT Licence.
62
+ Copyright (c) 2013-2015, Gutentag is developed and maintained by Pat Allan, and is released under the open MIT Licence.
@@ -4,7 +4,7 @@ class GutentagTables < ActiveRecord::Migration
4
4
  t.integer :tag_id, :null => false
5
5
  t.integer :taggable_id, :null => false
6
6
  t.string :taggable_type, :null => false
7
- t.timestamps
7
+ t.timestamps :null => false
8
8
  end
9
9
 
10
10
  add_index :gutentag_taggings, :tag_id
@@ -14,7 +14,7 @@ class GutentagTables < ActiveRecord::Migration
14
14
 
15
15
  create_table :gutentag_tags do |t|
16
16
  t.string :name, :null => false
17
- t.timestamps
17
+ t.timestamps :null => false
18
18
  end
19
19
 
20
20
  add_index :gutentag_tags, :name, :unique => true
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 3.2.21"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 4.0.12"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 4.1.8"
6
+
7
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 4.2.0"
6
+
7
+ gemspec :path => "../"
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'gutentag'
4
- s.version = '0.5.1'
4
+ s.version = '0.6.0'
5
5
  s.authors = ['Pat Allan']
6
6
  s.email = ['pat@freelancing-gods.com']
7
7
  s.homepage = 'https://github.com/pat/gutentag'
@@ -14,7 +14,8 @@ Gem::Specification.new do |s|
14
14
  s.require_paths = ['lib']
15
15
 
16
16
  s.add_runtime_dependency 'activerecord', '>= 3.2.0'
17
+ s.add_runtime_dependency 'appraisal', '~> 1.0.2'
17
18
  s.add_development_dependency 'combustion', '0.5.1'
18
- s.add_development_dependency 'rspec-rails', '~> 2.13'
19
+ s.add_development_dependency 'rspec-rails', '~> 3.1'
19
20
  s.add_development_dependency 'sqlite3', '~> 1.3.7'
20
21
  end
@@ -1,4 +1,14 @@
1
+ require 'active_record/version'
2
+
1
3
  module Gutentag
4
+ def self.dirtier
5
+ @dirtier
6
+ end
7
+
8
+ def self.dirtier=(dirtier)
9
+ @dirtier = dirtier
10
+ end
11
+
2
12
  def self.normaliser
3
13
  @normaliser ||= Gutentag::TagName
4
14
  end
@@ -13,3 +23,9 @@ require 'gutentag/dirty'
13
23
  require 'gutentag/engine'
14
24
  require 'gutentag/persistence'
15
25
  require 'gutentag/tag_name'
26
+
27
+ if ActiveRecord::VERSION::MAJOR == 3
28
+ Gutentag.dirtier = Gutentag::Dirty
29
+ elsif ActiveRecord::VERSION::MAJOR == 4 && ActiveRecord::VERSION::MINOR < 2
30
+ Gutentag.dirtier = Gutentag::Dirty
31
+ end
@@ -19,11 +19,11 @@ module Gutentag::ActiveRecord
19
19
  end
20
20
 
21
21
  def tag_names
22
- @tag_names ||= tags.collect(&:name)
22
+ @tag_names ||= tags.pluck(:name)
23
23
  end
24
24
 
25
25
  def tag_names=(names)
26
- Gutentag::Dirty.call self, names
26
+ Gutentag.dirtier.call self, names if Gutentag.dirtier
27
27
 
28
28
  @tag_names = names
29
29
  end
@@ -26,7 +26,7 @@ describe "Managing tags via names" do
26
26
 
27
27
  expect(article.changed_attributes.stringify_keys).
28
28
  to eq('tag_names' => ['melbourne'])
29
- end
29
+ end if Gutentag.dirtier
30
30
 
31
31
  it "does not make model dirty when changing through tag_names" do
32
32
  article.tag_names << 'melbourne'
@@ -1,6 +1,6 @@
1
1
  ActiveRecord::Schema.define do
2
2
  create_table :articles, :force => true do |t|
3
- t.string :title
4
- t.timestamps
3
+ t.string :title
4
+ t.timestamps :null => false
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Gutentag::Tag do
3
+ describe Gutentag::Tag, :type => :model do
4
4
  describe '.find_by_name' do
5
5
  it "returns a tag with the same name" do
6
6
  existing = Gutentag::Tag.create! :name => 'pancakes'
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Gutentag::Tagging do
3
+ describe Gutentag::Tagging, :type => :model do
4
4
  describe '#valid?' do
5
5
  let(:tag) { Gutentag::Tag.create! :name => 'pancakes' }
6
6
  let(:taggable) { Article.create! }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gutentag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Allan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-29 00:00:00.000000000 Z
11
+ date: 2015-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: appraisal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.2
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: combustion
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '2.13'
61
+ version: '3.1'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '2.13'
68
+ version: '3.1'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sqlite3
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -75,6 +89,7 @@ extra_rdoc_files: []
75
89
  files:
76
90
  - ".gitignore"
77
91
  - ".travis.yml"
92
+ - Appraisals
78
93
  - Gemfile
79
94
  - LICENCE
80
95
  - README.md
@@ -84,6 +99,10 @@ files:
84
99
  - db/migrate/1_gutentag_tables.rb
85
100
  - db/migrate/2_gutentag_cache_counter.rb
86
101
  - db/migrate/3_no_null_counters.rb
102
+ - gemfiles/rails_3_2.gemfile
103
+ - gemfiles/rails_4_0.gemfile
104
+ - gemfiles/rails_4_1.gemfile
105
+ - gemfiles/rails_4_2.gemfile
87
106
  - gutentag.gemspec
88
107
  - lib/gutentag.rb
89
108
  - lib/gutentag/active_record.rb
@@ -121,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
140
  version: '0'
122
141
  requirements: []
123
142
  rubyforge_project:
124
- rubygems_version: 2.3.0
143
+ rubygems_version: 2.2.2
125
144
  signing_key:
126
145
  specification_version: 4
127
146
  summary: Good Tags