paper_trail 4.2.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
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"