paper_trail 4.2.0 → 5.0.0

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.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/{CONTRIBUTING.md → .github/CONTRIBUTING.md} +28 -9
  3. data/.github/ISSUE_TEMPLATE.md +13 -0
  4. data/.gitignore +2 -1
  5. data/.rubocop.yml +100 -0
  6. data/.rubocop_todo.yml +14 -0
  7. data/.travis.yml +8 -9
  8. data/Appraisals +41 -0
  9. data/CHANGELOG.md +49 -9
  10. data/Gemfile +1 -1
  11. data/README.md +130 -109
  12. data/Rakefile +19 -19
  13. data/doc/bug_report_template.rb +20 -14
  14. data/gemfiles/ar3.gemfile +10 -53
  15. data/gemfiles/ar4.gemfile +7 -0
  16. data/gemfiles/ar5.gemfile +13 -0
  17. data/lib/generators/paper_trail/install_generator.rb +26 -18
  18. data/lib/generators/paper_trail/templates/add_object_changes_to_versions.rb +4 -2
  19. data/lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb +2 -0
  20. data/lib/generators/paper_trail/templates/create_version_associations.rb +9 -4
  21. data/lib/generators/paper_trail/templates/create_versions.rb +39 -5
  22. data/lib/paper_trail.rb +169 -146
  23. data/lib/paper_trail/attributes_serialization.rb +89 -17
  24. data/lib/paper_trail/cleaner.rb +15 -9
  25. data/lib/paper_trail/config.rb +28 -11
  26. data/lib/paper_trail/frameworks/active_record.rb +4 -0
  27. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +5 -1
  28. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +6 -2
  29. data/lib/paper_trail/frameworks/cucumber.rb +1 -0
  30. data/lib/paper_trail/frameworks/rails.rb +2 -7
  31. data/lib/paper_trail/frameworks/rails/controller.rb +29 -9
  32. data/lib/paper_trail/frameworks/rails/engine.rb +7 -1
  33. data/lib/paper_trail/frameworks/rspec.rb +5 -5
  34. data/lib/paper_trail/frameworks/rspec/helpers.rb +3 -1
  35. data/lib/paper_trail/frameworks/sinatra.rb +6 -4
  36. data/lib/paper_trail/has_paper_trail.rb +199 -106
  37. data/lib/paper_trail/record_history.rb +1 -3
  38. data/lib/paper_trail/reifier.rb +297 -118
  39. data/lib/paper_trail/serializers/json.rb +3 -3
  40. data/lib/paper_trail/serializers/yaml.rb +27 -8
  41. data/lib/paper_trail/version_association_concern.rb +3 -1
  42. data/lib/paper_trail/version_concern.rb +75 -35
  43. data/lib/paper_trail/version_number.rb +6 -9
  44. data/paper_trail.gemspec +44 -51
  45. data/spec/generators/install_generator_spec.rb +24 -25
  46. data/spec/generators/paper_trail/templates/create_versions_spec.rb +51 -0
  47. data/spec/models/animal_spec.rb +12 -12
  48. data/spec/models/boolit_spec.rb +8 -8
  49. data/spec/models/callback_modifier_spec.rb +47 -47
  50. data/spec/models/car_spec.rb +13 -0
  51. data/spec/models/fluxor_spec.rb +3 -3
  52. data/spec/models/gadget_spec.rb +19 -19
  53. data/spec/models/joined_version_spec.rb +3 -3
  54. data/spec/models/json_version_spec.rb +23 -24
  55. data/spec/models/kitchen/banana_spec.rb +3 -3
  56. data/spec/models/not_on_update_spec.rb +7 -4
  57. data/spec/models/post_with_status_spec.rb +13 -3
  58. data/spec/models/skipper_spec.rb +10 -10
  59. data/spec/models/thing_spec.rb +4 -4
  60. data/spec/models/truck_spec.rb +5 -0
  61. data/spec/models/vehicle_spec.rb +5 -0
  62. data/spec/models/version_spec.rb +103 -59
  63. data/spec/models/widget_spec.rb +82 -52
  64. data/spec/modules/paper_trail_spec.rb +2 -2
  65. data/spec/modules/version_concern_spec.rb +11 -12
  66. data/spec/modules/version_number_spec.rb +2 -4
  67. data/spec/paper_trail/config_spec.rb +10 -29
  68. data/spec/paper_trail_spec.rb +16 -14
  69. data/spec/rails_helper.rb +10 -9
  70. data/spec/requests/articles_spec.rb +11 -7
  71. data/spec/spec_helper.rb +41 -22
  72. data/spec/support/alt_db_init.rb +8 -13
  73. data/test/custom_json_serializer.rb +3 -3
  74. data/test/dummy/Rakefile +2 -2
  75. data/test/dummy/app/controllers/application_controller.rb +21 -8
  76. data/test/dummy/app/controllers/articles_controller.rb +11 -8
  77. data/test/dummy/app/controllers/widgets_controller.rb +13 -12
  78. data/test/dummy/app/models/animal.rb +1 -1
  79. data/test/dummy/app/models/article.rb +19 -11
  80. data/test/dummy/app/models/authorship.rb +1 -1
  81. data/test/dummy/app/models/bar_habtm.rb +4 -0
  82. data/test/dummy/app/models/book.rb +4 -4
  83. data/test/dummy/app/models/boolit.rb +1 -1
  84. data/test/dummy/app/models/callback_modifier.rb +6 -6
  85. data/test/dummy/app/models/car.rb +3 -0
  86. data/test/dummy/app/models/chapter.rb +4 -4
  87. data/test/dummy/app/models/customer.rb +1 -1
  88. data/test/dummy/app/models/document.rb +2 -2
  89. data/test/dummy/app/models/editor.rb +1 -1
  90. data/test/dummy/app/models/foo_habtm.rb +4 -0
  91. data/test/dummy/app/models/fruit.rb +2 -2
  92. data/test/dummy/app/models/gadget.rb +1 -1
  93. data/test/dummy/app/models/kitchen/banana.rb +1 -1
  94. data/test/dummy/app/models/legacy_widget.rb +2 -2
  95. data/test/dummy/app/models/line_item.rb +1 -1
  96. data/test/dummy/app/models/not_on_update.rb +1 -1
  97. data/test/dummy/app/models/person.rb +6 -6
  98. data/test/dummy/app/models/post.rb +1 -1
  99. data/test/dummy/app/models/post_with_status.rb +1 -1
  100. data/test/dummy/app/models/quotation.rb +1 -1
  101. data/test/dummy/app/models/section.rb +1 -1
  102. data/test/dummy/app/models/skipper.rb +2 -2
  103. data/test/dummy/app/models/song.rb +13 -4
  104. data/test/dummy/app/models/thing.rb +2 -2
  105. data/test/dummy/app/models/translation.rb +2 -2
  106. data/test/dummy/app/models/truck.rb +4 -0
  107. data/test/dummy/app/models/vehicle.rb +4 -0
  108. data/test/dummy/app/models/whatchamajigger.rb +1 -1
  109. data/test/dummy/app/models/widget.rb +7 -6
  110. data/test/dummy/app/versions/joined_version.rb +4 -3
  111. data/test/dummy/app/versions/json_version.rb +1 -1
  112. data/test/dummy/app/versions/kitchen/banana_version.rb +1 -1
  113. data/test/dummy/app/versions/post_version.rb +2 -2
  114. data/test/dummy/config.ru +1 -1
  115. data/test/dummy/config/application.rb +20 -9
  116. data/test/dummy/config/boot.rb +5 -5
  117. data/test/dummy/config/environment.rb +1 -1
  118. data/test/dummy/config/environments/development.rb +4 -3
  119. data/test/dummy/config/environments/production.rb +3 -2
  120. data/test/dummy/config/environments/test.rb +15 -5
  121. data/test/dummy/config/initializers/backtrace_silencers.rb +4 -2
  122. data/test/dummy/config/initializers/paper_trail.rb +1 -2
  123. data/test/dummy/config/initializers/secret_token.rb +3 -1
  124. data/test/dummy/config/initializers/session_store.rb +1 -1
  125. data/test/dummy/config/routes.rb +2 -2
  126. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +120 -74
  127. data/test/dummy/db/schema.rb +29 -6
  128. data/test/dummy/script/rails +6 -4
  129. data/test/functional/controller_test.rb +34 -35
  130. data/test/functional/enabled_for_controller_test.rb +6 -7
  131. data/test/functional/modular_sinatra_test.rb +43 -38
  132. data/test/functional/sinatra_test.rb +49 -40
  133. data/test/functional/thread_safety_test.rb +4 -6
  134. data/test/paper_trail_test.rb +15 -14
  135. data/test/test_helper.rb +68 -44
  136. data/test/time_travel_helper.rb +1 -15
  137. data/test/unit/associations_test.rb +517 -251
  138. data/test/unit/cleaner_test.rb +66 -60
  139. data/test/unit/inheritance_column_test.rb +17 -17
  140. data/test/unit/model_test.rb +611 -504
  141. data/test/unit/protected_attrs_test.rb +16 -12
  142. data/test/unit/serializer_test.rb +44 -43
  143. data/test/unit/serializers/json_test.rb +17 -18
  144. data/test/unit/serializers/mixin_json_test.rb +15 -14
  145. data/test/unit/serializers/mixin_yaml_test.rb +20 -16
  146. data/test/unit/serializers/yaml_test.rb +12 -13
  147. data/test/unit/timestamp_test.rb +10 -12
  148. data/test/unit/version_test.rb +7 -7
  149. metadata +92 -40
@@ -1,7 +1,9 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
3
+ # You can add backtrace silencers for libraries that you're using but don't wish
4
+ # to see in your backtraces.
4
5
  # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
6
 
6
- # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # You can also remove all the silencers if you're trying to debug a problem that
8
+ # might stem from framework code.
7
9
  # Rails.backtrace_cleaner.remove_silencers!
@@ -1,5 +1,4 @@
1
- # Turn on associations tracking when the test suite is run on Travis CI
2
- PaperTrail.config.track_associations = true if ENV['TRAVIS']
1
+ PaperTrail.config.track_associations = true
3
2
 
4
3
  module PaperTrail
5
4
  class Version < ActiveRecord::Base
@@ -4,4 +4,6 @@
4
4
  # If you change this key, all old signed cookies will become invalid!
5
5
  # Make sure the secret is at least 30 characters and all random,
6
6
  # no regular words or you'll be exposed to dictionary attacks.
7
- Dummy::Application.config.secret_token = '99c0312cf416079a8c7ccc63acb1e9f4f17741398ec8022a2f4fb509c57f55b72486573e9816a026f507efbcd452a9e954d45c93c95d5bacd87e664ad6805d3f'
7
+ Dummy::Application.config.secret_token = "99c0312cf416079a8c7ccc63acb1e9f4f" +
8
+ "17741398ec8022a2f4fb509c57f55b72486573e9816a026f507efbcd452a9e954d45c93c" +
9
+ "95d5bacd87e664ad6805d3f"
@@ -1,6 +1,6 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- Dummy::Application.config.session_store :cookie_store, :key => '_dummy_session'
3
+ Dummy::Application.config.session_store :cookie_store, key: "_dummy_session"
4
4
 
5
5
  # Use the database for sessions instead of the cookie-based default,
6
6
  # which shouldn't be used to store highly confidential information
@@ -1,4 +1,4 @@
1
1
  Dummy::Application.routes.draw do
2
- resources :articles, :only => [:create]
3
- resources :widgets, :only => [:create, :update, :destroy]
2
+ resources :articles, only: [:create]
3
+ resources :widgets, only: [:create, :update, :destroy]
4
4
  end
@@ -1,33 +1,49 @@
1
+ # Keep this migration in sync with
2
+ # `lib/generators/paper_trail/templates/create_versions.rb`
3
+ # TODO: Is there a way to avoid duplication?
1
4
  class SetUpTestTables < ActiveRecord::Migration
2
- def self.up
3
- create_table :skippers, :force => true do |t|
5
+ MYSQL_ADAPTERS = [
6
+ "ActiveRecord::ConnectionAdapters::MysqlAdapter",
7
+ "ActiveRecord::ConnectionAdapters::Mysql2Adapter"
8
+ ].freeze
9
+ TEXT_BYTES = 1_073_741_823
10
+
11
+ def up
12
+ # Classes: Vehicle, Car, Truck
13
+ create_table :vehicles, force: true do |t|
14
+ t.string :name, null: false
15
+ t.string :type, null: false
16
+ t.timestamps null: false
17
+ end
18
+
19
+ create_table :skippers, force: true do |t|
4
20
  t.string :name
5
21
  t.datetime :another_timestamp
6
- t.timestamps :null => true
22
+ t.timestamps null: true
7
23
  end
8
24
 
9
- create_table :widgets, :force => true do |t|
25
+ create_table :widgets, force: true do |t|
10
26
  t.string :name
11
27
  t.text :a_text
12
28
  t.integer :an_integer
13
29
  t.float :a_float
14
- t.decimal :a_decimal, :precision => 6, :scale => 4
30
+ t.decimal :a_decimal, precision: 6, scale: 4
15
31
  t.datetime :a_datetime
16
32
  t.time :a_time
17
33
  t.date :a_date
18
34
  t.boolean :a_boolean
19
35
  t.string :sacrificial_column
20
36
  t.string :type
21
- t.timestamps :null => true
37
+ t.timestamps null: true
22
38
  end
23
39
 
24
- create_table :versions, :force => true do |t|
25
- t.string :item_type, :null => false
26
- t.integer :item_id, :null => false
27
- t.string :event, :null => false
40
+ create_table :versions, versions_table_options do |t|
41
+ t.string :item_type, null: false
42
+ t.integer :item_id, null: false
43
+ t.string :event, null: false
28
44
  t.string :whodunnit
29
- t.text :object
30
- t.text :object_changes
45
+ t.text :object, limit: TEXT_BYTES
46
+ t.text :object_changes, limit: TEXT_BYTES
31
47
  t.integer :transaction_id
32
48
  t.datetime :created_at
33
49
 
@@ -46,16 +62,18 @@ class SetUpTestTables < ActiveRecord::Migration
46
62
 
47
63
  create_table :version_associations do |t|
48
64
  t.integer :version_id
49
- t.string :foreign_key_name, :null => false
65
+ t.string :foreign_key_name, null: false
50
66
  t.integer :foreign_key_id
51
67
  end
52
68
  add_index :version_associations, [:version_id]
53
- add_index :version_associations, [:foreign_key_name, :foreign_key_id], :name => 'index_version_associations_on_foreign_key'
54
-
55
- create_table :post_versions, :force => true do |t|
56
- t.string :item_type, :null => false
57
- t.integer :item_id, :null => false
58
- t.string :event, :null => false
69
+ add_index :version_associations,
70
+ [:foreign_key_name, :foreign_key_id],
71
+ name: "index_version_associations_on_foreign_key"
72
+
73
+ create_table :post_versions, force: true do |t|
74
+ t.string :item_type, null: false
75
+ t.integer :item_id, null: false
76
+ t.string :event, null: false
59
77
  t.string :whodunnit
60
78
  t.text :object
61
79
  t.datetime :created_at
@@ -66,11 +84,11 @@ class SetUpTestTables < ActiveRecord::Migration
66
84
  end
67
85
  add_index :post_versions, [:item_type, :item_id]
68
86
 
69
- if ENV['DB'] == 'postgres' && ::ActiveRecord::VERSION::MAJOR >= 4
70
- create_table :json_versions, :force => true do |t|
71
- t.string :item_type, :null => false
72
- t.integer :item_id, :null => false
73
- t.string :event, :null => false
87
+ if ENV["DB"] == "postgres" && ::ActiveRecord::VERSION::MAJOR >= 4
88
+ create_table :json_versions, force: true do |t|
89
+ t.string :item_type, null: false
90
+ t.integer :item_id, null: false
91
+ t.string :event, null: false
74
92
  t.string :whodunnit
75
93
  t.json :object
76
94
  t.json :object_changes
@@ -79,168 +97,186 @@ class SetUpTestTables < ActiveRecord::Migration
79
97
  add_index :json_versions, [:item_type, :item_id]
80
98
  end
81
99
 
82
- create_table :not_on_updates, :force => true do |t|
83
- t.timestamps :null => true
100
+ create_table :not_on_updates, force: true do |t|
101
+ t.timestamps null: true
84
102
  end
85
103
 
86
- create_table :bananas, :force => true do |t|
87
- t.timestamps :null => true
104
+ create_table :bananas, force: true do |t|
105
+ t.timestamps null: true
88
106
  end
89
107
 
90
- create_table :banana_versions, :force => true do |t|
91
- t.string :item_type, :null => false
92
- t.integer :item_id, :null => false
93
- t.string :event, :null => false
108
+ create_table :banana_versions, force: true do |t|
109
+ t.string :item_type, null: false
110
+ t.integer :item_id, null: false
111
+ t.string :event, null: false
94
112
  t.string :whodunnit
95
113
  t.text :object
96
114
  t.datetime :created_at
97
115
  end
98
116
  add_index :banana_versions, [:item_type, :item_id]
99
117
 
100
- create_table :wotsits, :force => true do |t|
118
+ create_table :wotsits, force: true do |t|
101
119
  t.integer :widget_id
102
120
  t.string :name
103
- t.timestamps :null => true
121
+ t.timestamps null: true
104
122
  end
105
123
 
106
- create_table :fluxors, :force => true do |t|
124
+ create_table :fluxors, force: true do |t|
107
125
  t.integer :widget_id
108
126
  t.string :name
109
127
  end
110
128
 
111
- create_table :whatchamajiggers, :force => true do |t|
129
+ create_table :whatchamajiggers, force: true do |t|
112
130
  t.string :owner_type
113
131
  t.integer :owner_id
114
132
  t.string :name
115
133
  end
116
134
 
117
- create_table :articles, :force => true do |t|
135
+ create_table :articles, force: true do |t|
118
136
  t.string :title
119
137
  t.string :content
120
138
  t.string :abstract
121
139
  t.string :file_upload
122
140
  end
123
141
 
124
- create_table :books, :force => true do |t|
142
+ create_table :books, force: true do |t|
125
143
  t.string :title
126
144
  end
127
145
 
128
- create_table :authorships, :force => true do |t|
146
+ create_table :authorships, force: true do |t|
129
147
  t.integer :book_id
130
- t.integer :person_id
148
+ t.integer :author_id
131
149
  end
132
150
 
133
- create_table :people, :force => true do |t|
151
+ create_table :people, force: true do |t|
134
152
  t.string :name
135
153
  t.string :time_zone
136
154
  end
137
155
 
138
- create_table :editorships, :force => true do |t|
156
+ create_table :editorships, force: true do |t|
139
157
  t.integer :book_id
140
158
  t.integer :editor_id
141
159
  end
142
160
 
143
- create_table :editors, :force => true do |t|
161
+ create_table :editors, force: true do |t|
144
162
  t.string :name
145
163
  end
146
164
 
147
- create_table :songs, :force => true do |t|
165
+ create_table :songs, force: true do |t|
148
166
  t.integer :length
149
167
  end
150
168
 
151
- create_table :posts, :force => true do |t|
169
+ create_table :posts, force: true do |t|
152
170
  t.string :title
153
171
  t.string :content
154
172
  end
155
173
 
156
- create_table :post_with_statuses, :force => true do |t|
174
+ create_table :post_with_statuses, force: true do |t|
157
175
  t.integer :status
158
176
  end
159
177
 
160
- create_table :animals, :force => true do |t|
178
+ create_table :animals, force: true do |t|
161
179
  t.string :name
162
- t.string :species # single table inheritance column
180
+ t.string :species # single table inheritance column
163
181
  end
164
182
 
165
- create_table :documents, :force => true do |t|
183
+ create_table :documents, force: true do |t|
166
184
  t.string :name
167
185
  end
168
186
 
169
- create_table :legacy_widgets, :force => true do |t|
187
+ create_table :legacy_widgets, force: true do |t|
170
188
  t.string :name
171
189
  t.integer :version
172
190
  end
173
191
 
174
- create_table :things, :force => true do |t|
192
+ create_table :things, force: true do |t|
175
193
  t.string :name
176
194
  end
177
195
 
178
- create_table :translations, :force => true do |t|
196
+ create_table :translations, force: true do |t|
179
197
  t.string :headline
180
198
  t.string :content
181
199
  t.string :language_code
182
200
  t.string :type
183
201
  end
184
202
 
185
- create_table :gadgets, :force => true do |t|
203
+ create_table :gadgets, force: true do |t|
186
204
  t.string :name
187
205
  t.string :brand
188
- t.timestamps :null => true
206
+ t.timestamps null: true
189
207
  end
190
208
 
191
- create_table :customers, :force => true do |t|
192
- t.string :name
209
+ create_table :customers, force: true do |t|
210
+ t.string :name
193
211
  end
194
212
 
195
- create_table :orders, :force => true do |t|
213
+ create_table :orders, force: true do |t|
196
214
  t.integer :customer_id
197
215
  t.string :order_date
198
216
  end
199
217
 
200
- create_table :line_items, :force => true do |t|
218
+ create_table :line_items, force: true do |t|
201
219
  t.integer :order_id
202
220
  t.string :product
203
221
  end
204
222
 
205
- create_table :fruits, :force => true do |t|
223
+ create_table :fruits, force: true do |t|
206
224
  t.string :name
207
225
  t.string :color
208
226
  end
209
227
 
210
- create_table :boolits, :force => true do |t|
228
+ create_table :boolits, force: true do |t|
211
229
  t.string :name
212
- t.boolean :scoped, :default => true
230
+ t.boolean :scoped, default: true
213
231
  end
214
232
 
215
- create_table :callback_modifiers, :force => true do |t|
233
+ create_table :callback_modifiers, force: true do |t|
216
234
  t.string :some_content
217
- t.boolean :deleted, :default => false
235
+ t.boolean :deleted, default: false
218
236
  end
219
237
 
220
- create_table :chapters, :force => true do |t|
238
+ create_table :chapters, force: true do |t|
221
239
  t.string :name
222
240
  end
223
241
 
224
- create_table :sections, :force => true do |t|
242
+ create_table :sections, force: true do |t|
225
243
  t.integer :chapter_id
226
244
  t.string :name
227
245
  end
228
246
 
229
- create_table :paragraphs, :force => true do |t|
247
+ create_table :paragraphs, force: true do |t|
230
248
  t.integer :section_id
231
249
  t.string :name
232
250
  end
233
251
 
234
- create_table :quotations, :force => true do |t|
252
+ create_table :quotations, force: true do |t|
235
253
  t.integer :chapter_id
236
254
  end
237
255
 
238
- create_table :citations, :force => true do |t|
256
+ create_table :citations, force: true do |t|
239
257
  t.integer :quotation_id
240
258
  end
259
+
260
+ create_table :foo_habtms, force: true do |t|
261
+ t.string :name
262
+ end
263
+
264
+ create_table :bar_habtms, force: true do |t|
265
+ t.string :name
266
+ end
267
+
268
+ create_table :bar_habtms_foo_habtms, force: true, id: false do |t|
269
+ t.integer :foo_habtm_id
270
+ t.integer :bar_habtm_id
271
+ end
272
+ add_index :bar_habtms_foo_habtms, [:foo_habtm_id]
273
+ add_index :bar_habtms_foo_habtms, [:bar_habtm_id]
241
274
  end
242
275
 
243
- def self.down
276
+ def down
277
+ drop_table :bar_habtms_foo_habtms
278
+ drop_table :foo_habtms
279
+ drop_table :bar_habtms
244
280
  drop_table :citations
245
281
  drop_table :quotations
246
282
  drop_table :animals
@@ -257,12 +293,12 @@ class SetUpTestTables < ActiveRecord::Migration
257
293
  drop_table :whatchamajiggers
258
294
  drop_table :fluxors
259
295
  drop_table :wotsits
260
- remove_index :post_versions, :column => [:item_type, :item_id]
296
+ remove_index :post_versions, column: [:item_type, :item_id]
261
297
  drop_table :post_versions
262
- remove_index :versions, :column => [:item_type, :item_id]
298
+ remove_index :versions, column: [:item_type, :item_id]
263
299
  drop_table :versions
264
300
  if JsonVersion.table_exists?
265
- remove_index :json_versions, :column => [:item_type, :item_id]
301
+ remove_index :json_versions, column: [:item_type, :item_id]
266
302
  drop_table :json_versions
267
303
  end
268
304
  drop_table :widgets
@@ -279,9 +315,19 @@ class SetUpTestTables < ActiveRecord::Migration
279
315
  drop_table :chapters
280
316
  drop_table :sections
281
317
  drop_table :paragraphs
282
- remove_index :version_associations, :column => [:version_id]
283
- remove_index :version_associations, :name => 'index_version_associations_on_foreign_key'
318
+ remove_index :version_associations, column: [:version_id]
319
+ remove_index :version_associations, name: "index_version_associations_on_foreign_key"
284
320
  drop_table :version_associations
285
321
  drop_table :callback_modifiers
286
322
  end
323
+
324
+ private
325
+
326
+ def versions_table_options
327
+ opts = { force: true }
328
+ if MYSQL_ADAPTERS.include?(connection.class.name)
329
+ opts[:options] = "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"
330
+ end
331
+ opts
332
+ end
287
333
  end
@@ -27,7 +27,7 @@ ActiveRecord::Schema.define(version: 20110208155312) do
27
27
 
28
28
  create_table "authorships", force: :cascade do |t|
29
29
  t.integer "book_id"
30
- t.integer "person_id"
30
+ t.integer "author_id"
31
31
  end
32
32
 
33
33
  create_table "banana_versions", force: :cascade do |t|
@@ -46,6 +46,18 @@ ActiveRecord::Schema.define(version: 20110208155312) do
46
46
  t.datetime "updated_at"
47
47
  end
48
48
 
49
+ create_table "bar_habtms", force: :cascade do |t|
50
+ t.string "name"
51
+ end
52
+
53
+ create_table "bar_habtms_foo_habtms", id: false, force: :cascade do |t|
54
+ t.integer "foo_habtm_id"
55
+ t.integer "bar_habtm_id"
56
+ end
57
+
58
+ add_index "bar_habtms_foo_habtms", ["bar_habtm_id"], name: "index_bar_habtms_foo_habtms_on_bar_habtm_id"
59
+ add_index "bar_habtms_foo_habtms", ["foo_habtm_id"], name: "index_bar_habtms_foo_habtms_on_foo_habtm_id"
60
+
49
61
  create_table "books", force: :cascade do |t|
50
62
  t.string "title"
51
63
  end
@@ -90,6 +102,10 @@ ActiveRecord::Schema.define(version: 20110208155312) do
90
102
  t.string "name"
91
103
  end
92
104
 
105
+ create_table "foo_habtms", force: :cascade do |t|
106
+ t.string "name"
107
+ end
108
+
93
109
  create_table "fruits", force: :cascade do |t|
94
110
  t.string "name"
95
111
  t.string "color"
@@ -185,6 +201,13 @@ ActiveRecord::Schema.define(version: 20110208155312) do
185
201
  t.string "type"
186
202
  end
187
203
 
204
+ create_table "vehicles", force: :cascade do |t|
205
+ t.string "name", null: false
206
+ t.string "type", null: false
207
+ t.datetime "created_at", null: false
208
+ t.datetime "updated_at", null: false
209
+ end
210
+
188
211
  create_table "version_associations", force: :cascade do |t|
189
212
  t.integer "version_id"
190
213
  t.string "foreign_key_name", null: false
@@ -195,12 +218,12 @@ ActiveRecord::Schema.define(version: 20110208155312) do
195
218
  add_index "version_associations", ["version_id"], name: "index_version_associations_on_version_id"
196
219
 
197
220
  create_table "versions", force: :cascade do |t|
198
- t.string "item_type", null: false
199
- t.integer "item_id", null: false
200
- t.string "event", null: false
221
+ t.string "item_type", null: false
222
+ t.integer "item_id", null: false
223
+ t.string "event", null: false
201
224
  t.string "whodunnit"
202
- t.text "object"
203
- t.text "object_changes"
225
+ t.text "object", limit: 1073741823
226
+ t.text "object_changes", limit: 1073741823
204
227
  t.integer "transaction_id"
205
228
  t.datetime "created_at"
206
229
  t.integer "answer"