paper_trail-association_tracking 1.1.0 → 1.1.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: 844d3ff1eb96a7bae834ad57625e2fb87cf37ebbea76bd489621a31c2a57d6f7
4
- data.tar.gz: 0cd147df0a5ee52494abcda09e0fc44c10ebae176cc567a3659debb7533ad72c
3
+ metadata.gz: 32ff5ab37c0c0ed5ffdbc1c51ecb7a436be425a15631da3bb2fb00b8dbb1653d
4
+ data.tar.gz: 40609621efbec9948e8bb880de590a251c98a95531356e0436fff8b88719af1f
5
5
  SHA512:
6
- metadata.gz: b49a595381d282b2ace65a18405921fba2970a22dde79841b5b7e42d148392b37caac9323136721cbebb9e0f0b74962d333e38883f923a934bb599b54dcf967a
7
- data.tar.gz: '0180dff00868dfb4e49be3722df2210c630aa1550cf2963714d445f1b0c7d4eadfc96db258bcf88b4554949720821a33f3f00178b2ee4aeb61c52c26238de047'
6
+ metadata.gz: ad7e68bb6c2a890cfcdd1300796dc32c8ad1d428dd73f4041fb81339532573fab8b78cf0a5616b28630d558b95fcd8406d7b421a31c697d32dd4beb983cad573
7
+ data.tar.gz: 492671a7f7a042246fd294e78092b2b59498166d5180032cc4db83aa836e93aad029dabcc9321831ea56901c8b23869a369dbd959bed74791c80f12f6808fa23
@@ -1,11 +1,21 @@
1
1
  # CHANGELOG
2
2
 
3
- ## Unreleased
3
+ ## 2.0.0 - Unreleased
4
4
 
5
- - None
5
+ - [#11](https://github.com/westonganger/paper_trail-association_tracking/issues/11) - Remove null constraint on `version_associations.foreign_type` column which was added in `v1.1.0`. This fixes issues adding the column to existing projects who are upgrading.
6
+ - Add generator `rails g paper_trail_association_tracking:add_foreign_type_to_version_associations` for `versions_associations.foreign_type` column for upgrading applications from `v1.0.0` or earlier.
7
+
8
+ ### How to Upgrade from v1.0.0 or earlier
9
+
10
+ - Run `rails g paper_trail_association_tracking:add_foreign_type_to_version_associations` and then migrate your database.
11
+
12
+ ## 1.1.1 - 2018-01-14
13
+
14
+ - Same as v2 release, this is released simply to maintain a working `v1` branch since `v1.1.0` was broken
6
15
 
7
16
  ## 1.1.0 - 2018-12-28
8
17
 
18
+ - Note: This release is somewhat broken, please upgrade to `v2.0.0` or stay on `v1.0.0`
9
19
  - [#10](https://github.com/westonganger/paper_trail-association_tracking/pull/9) - The `has_many: true` option now reifies polymorphic associations. Previously they were skipped.
10
20
  - [#9](https://github.com/westonganger/paper_trail-association_tracking/pull/9) - The `belongs_to: true` option now reifies polymorphic associations. Previously they were skipped.
11
21
 
data/README.md CHANGED
@@ -9,8 +9,7 @@ Plugin for the [PaperTrail](https://github.com/paper-trail-gem/paper_trail.git)
9
9
  **PR's will happily be accepted**
10
10
 
11
11
  This gem was extracted from PaperTrail in v9.2 to simplify things in PaperTrail and association tracking seperately.
12
- At this time, `paper_trail` has a runtime dependency on this gem and will keep running the existing tests related
13
- to association tracking. This arrangement will be maintained for a few years, if practical.
12
+ At this time, `paper_trail` only has a development dependency in order to run the tests. If you want use this gem in your project you must add it to your own Gemfile.
14
13
 
15
14
  A little history lesson, discussed as early as 2009, and first implemented in late 2014, association
16
15
  tracking was part of PT core until 2018 as an experimental feature and was use at your own risk. This gem now
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators"
4
+ require "rails/generators/active_record"
5
+
6
+ module PaperTrailAssociationTracking
7
+ # Installs PaperTrail in a rails app.
8
+ class AddForeignTypeToVersionAssociationsGenerator < ::Rails::Generators::Base
9
+ include ::Rails::Generators::Migration
10
+
11
+ # Class names of MySQL adapters.
12
+ # - `MysqlAdapter` - Used by gems: `mysql`, `activerecord-jdbcmysql-adapter`.
13
+ # - `Mysql2Adapter` - Used by `mysql2` gem.
14
+ MYSQL_ADAPTERS = [
15
+ "ActiveRecord::ConnectionAdapters::MysqlAdapter",
16
+ "ActiveRecord::ConnectionAdapters::Mysql2Adapter"
17
+ ].freeze
18
+
19
+ source_root File.expand_path("../templates", __FILE__)
20
+
21
+ desc "Generates (but does not run) a migration to add a the foreign_type column to the version_associations table after upgrading from v1.0 or earlier."
22
+
23
+ def create_migrations
24
+ add_paper_trail_migration("add_foreign_type_to_version_associations")
25
+ end
26
+
27
+ def self.next_migration_number(dirname)
28
+ ::ActiveRecord::Generators::Base.next_migration_number(dirname)
29
+ end
30
+
31
+ protected
32
+
33
+ def add_paper_trail_migration(template)
34
+ migration_dir = File.expand_path("db/migrate")
35
+ if self.class.migration_exists?(migration_dir, template)
36
+ ::Kernel.warn "Migration already exists: #{template}"
37
+ else
38
+ migration_template(
39
+ "#{template}.rb.erb",
40
+ "db/migrate/#{template}.rb",
41
+ migration_version: migration_version
42
+ )
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ def migration_version
49
+ major = ActiveRecord::VERSION::MAJOR
50
+ if major >= 5
51
+ "[#{major}.#{ActiveRecord::VERSION::MINOR}]"
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,11 @@
1
+ # This migration and AddTransactionIdColumnToVersions provide the necessary
2
+ # schema for tracking associations.
3
+ class AddForeignTypeToVersionAssociations < ActiveRecord::Migration<%= migration_version %>
4
+ def self.up
5
+ add_column :version_associations, :foreign_type, :string, index: true
6
+ end
7
+
8
+ def self.down
9
+ remove_column :version_associations, :foreign_type
10
+ end
11
+ end
@@ -6,7 +6,7 @@ class CreateVersionAssociations < ActiveRecord::Migration<%= migration_version %
6
6
  t.integer :version_id
7
7
  t.string :foreign_key_name, null: false
8
8
  t.integer :foreign_key_id
9
- t.string :foreign_type, null: false
9
+ t.string :foreign_type
10
10
  end
11
11
  add_index :version_associations, [:version_id]
12
12
  add_index :version_associations,
@@ -100,7 +100,7 @@ module PaperTrailAssociationTracking
100
100
  select("MIN(version_id)").
101
101
  where("foreign_key_name = ?", assoc.foreign_key).
102
102
  where("foreign_key_id = ?", model.id).
103
- where("foreign_type = ?", model.class.name).
103
+ where(foreign_type: [model.class.name, nil]).
104
104
  where("#{version_table}.item_type = ?", assoc.klass.base_class.name).
105
105
  where("created_at >= ? OR transaction_id = ?", version_at, tx_id).
106
106
  group("item_id").
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PaperTrailAssociationTracking
4
- VERSION = "1.1.0"
4
+ VERSION = "1.1.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paper_trail-association_tracking
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Weston Ganger
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-12-28 00:00:00.000000000 Z
13
+ date: 2019-01-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: appraisal
@@ -210,7 +210,9 @@ files:
210
210
  - LICENSE
211
211
  - README.md
212
212
  - Rakefile
213
+ - lib/generators/paper_trail_association_tracking/add_foreign_type_to_version_associations_generator.rb
213
214
  - lib/generators/paper_trail_association_tracking/install_generator.rb
215
+ - lib/generators/paper_trail_association_tracking/templates/add_foreign_type_to_version_associations.rb.erb
214
216
  - lib/generators/paper_trail_association_tracking/templates/add_transaction_id_column_to_versions.rb.erb
215
217
  - lib/generators/paper_trail_association_tracking/templates/create_version_associations.rb.erb
216
218
  - lib/paper_trail-association_tracking.rb
@@ -252,7 +254,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
254
  - !ruby/object:Gem::Version
253
255
  version: 1.3.6
254
256
  requirements: []
255
- rubygems_version: 3.0.1
257
+ rubyforge_project:
258
+ rubygems_version: 2.7.6
256
259
  signing_key:
257
260
  specification_version: 4
258
261
  summary: Plugin for the PaperTrail gem to track and reify associations