paper_trail 4.0.0 → 5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CONTRIBUTING.md +105 -0
- data/.github/ISSUE_TEMPLATE.md +13 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +100 -0
- data/.rubocop_todo.yml +14 -0
- data/.travis.yml +11 -10
- data/Appraisals +37 -0
- data/CHANGELOG.md +173 -8
- data/Gemfile +1 -1
- data/README.md +641 -470
- data/Rakefile +19 -19
- data/doc/bug_report_template.rb +71 -0
- data/doc/warning_about_not_setting_whodunnit.md +32 -0
- data/gemfiles/ar3.gemfile +18 -0
- data/gemfiles/ar4.gemfile +7 -0
- data/gemfiles/ar5.gemfile +13 -0
- data/lib/generators/paper_trail/install_generator.rb +26 -18
- data/lib/generators/paper_trail/templates/add_object_changes_to_versions.rb +3 -1
- data/lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb +2 -0
- data/lib/generators/paper_trail/templates/create_version_associations.rb +9 -4
- data/lib/generators/paper_trail/templates/create_versions.rb +53 -5
- data/lib/paper_trail/attribute_serializers/README.md +10 -0
- data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +58 -0
- data/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +48 -0
- data/lib/paper_trail/attribute_serializers/object_attribute.rb +39 -0
- data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +42 -0
- data/lib/paper_trail/cleaner.rb +41 -18
- data/lib/paper_trail/config.rb +42 -26
- data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +5 -1
- data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +6 -2
- data/lib/paper_trail/frameworks/active_record.rb +2 -2
- data/lib/paper_trail/frameworks/cucumber.rb +1 -0
- data/lib/paper_trail/frameworks/rails/controller.rb +50 -14
- data/lib/paper_trail/frameworks/rails/engine.rb +6 -1
- data/lib/paper_trail/frameworks/rails.rb +2 -7
- data/lib/paper_trail/frameworks/rspec/helpers.rb +3 -1
- data/lib/paper_trail/frameworks/rspec.rb +5 -5
- data/lib/paper_trail/frameworks/sinatra.rb +8 -5
- data/lib/paper_trail/has_paper_trail.rb +381 -221
- data/lib/paper_trail/record_history.rb +57 -0
- data/lib/paper_trail/reifier.rb +450 -0
- data/lib/paper_trail/serializers/json.rb +7 -7
- data/lib/paper_trail/serializers/yaml.rb +31 -12
- data/lib/paper_trail/version_association_concern.rb +6 -2
- data/lib/paper_trail/version_concern.rb +200 -287
- data/lib/paper_trail/version_number.rb +6 -9
- data/lib/paper_trail.rb +169 -137
- data/paper_trail.gemspec +41 -43
- data/spec/generators/install_generator_spec.rb +24 -25
- data/spec/generators/paper_trail/templates/create_versions_spec.rb +51 -0
- data/spec/models/animal_spec.rb +23 -6
- data/spec/models/boolit_spec.rb +8 -8
- data/spec/models/callback_modifier_spec.rb +96 -0
- data/spec/models/car_spec.rb +13 -0
- data/spec/models/fluxor_spec.rb +3 -3
- data/spec/models/gadget_spec.rb +19 -19
- data/spec/models/joined_version_spec.rb +3 -3
- data/spec/models/json_version_spec.rb +50 -28
- data/spec/models/kitchen/banana_spec.rb +3 -3
- data/spec/models/not_on_update_spec.rb +7 -4
- data/spec/models/post_with_status_spec.rb +13 -3
- data/spec/models/skipper_spec.rb +40 -11
- data/spec/models/thing_spec.rb +4 -4
- data/spec/models/truck_spec.rb +5 -0
- data/spec/models/vehicle_spec.rb +5 -0
- data/spec/models/version_spec.rb +103 -59
- data/spec/models/widget_spec.rb +86 -55
- data/spec/modules/paper_trail_spec.rb +2 -2
- data/spec/modules/version_concern_spec.rb +11 -12
- data/spec/modules/version_number_spec.rb +3 -4
- data/spec/paper_trail/config_spec.rb +33 -0
- data/spec/paper_trail_spec.rb +16 -14
- data/spec/rails_helper.rb +10 -9
- data/spec/requests/articles_spec.rb +11 -7
- data/spec/spec_helper.rb +42 -17
- data/spec/support/alt_db_init.rb +8 -13
- data/test/custom_json_serializer.rb +3 -3
- data/test/dummy/Rakefile +2 -2
- data/test/dummy/app/controllers/application_controller.rb +21 -8
- data/test/dummy/app/controllers/articles_controller.rb +11 -8
- data/test/dummy/app/controllers/widgets_controller.rb +13 -12
- data/test/dummy/app/models/animal.rb +1 -1
- data/test/dummy/app/models/article.rb +19 -11
- data/test/dummy/app/models/authorship.rb +1 -1
- data/test/dummy/app/models/bar_habtm.rb +4 -0
- data/test/dummy/app/models/book.rb +4 -4
- data/test/dummy/app/models/boolit.rb +1 -1
- data/test/dummy/app/models/callback_modifier.rb +45 -0
- data/test/dummy/app/models/car.rb +3 -0
- data/test/dummy/app/models/chapter.rb +9 -0
- data/test/dummy/app/models/citation.rb +5 -0
- data/test/dummy/app/models/customer.rb +1 -1
- data/test/dummy/app/models/document.rb +2 -2
- data/test/dummy/app/models/editor.rb +1 -1
- data/test/dummy/app/models/foo_habtm.rb +5 -0
- data/test/dummy/app/models/fruit.rb +2 -2
- data/test/dummy/app/models/gadget.rb +1 -1
- data/test/dummy/app/models/kitchen/banana.rb +1 -1
- data/test/dummy/app/models/legacy_widget.rb +2 -2
- data/test/dummy/app/models/line_item.rb +1 -1
- data/test/dummy/app/models/not_on_update.rb +1 -1
- data/test/dummy/app/models/paragraph.rb +5 -0
- data/test/dummy/app/models/person.rb +6 -6
- data/test/dummy/app/models/post.rb +1 -1
- data/test/dummy/app/models/post_with_status.rb +1 -1
- data/test/dummy/app/models/quotation.rb +5 -0
- data/test/dummy/app/models/section.rb +6 -0
- data/test/dummy/app/models/skipper.rb +2 -2
- data/test/dummy/app/models/song.rb +13 -4
- data/test/dummy/app/models/thing.rb +2 -2
- data/test/dummy/app/models/translation.rb +2 -2
- data/test/dummy/app/models/truck.rb +4 -0
- data/test/dummy/app/models/vehicle.rb +4 -0
- data/test/dummy/app/models/whatchamajigger.rb +1 -1
- data/test/dummy/app/models/widget.rb +7 -6
- data/test/dummy/app/versions/joined_version.rb +4 -3
- data/test/dummy/app/versions/json_version.rb +1 -1
- data/test/dummy/app/versions/kitchen/banana_version.rb +1 -1
- data/test/dummy/app/versions/post_version.rb +2 -2
- data/test/dummy/config/application.rb +20 -9
- data/test/dummy/config/boot.rb +5 -5
- data/test/dummy/config/database.postgres.yml +1 -1
- data/test/dummy/config/environment.rb +1 -1
- data/test/dummy/config/environments/development.rb +4 -3
- data/test/dummy/config/environments/production.rb +3 -2
- data/test/dummy/config/environments/test.rb +15 -5
- data/test/dummy/config/initializers/backtrace_silencers.rb +4 -2
- data/test/dummy/config/initializers/paper_trail.rb +4 -3
- data/test/dummy/config/initializers/secret_token.rb +3 -1
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/dummy/config/routes.rb +2 -2
- data/test/dummy/config.ru +1 -1
- data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +148 -68
- data/test/dummy/db/schema.rb +119 -31
- data/test/dummy/script/rails +6 -4
- data/test/functional/controller_test.rb +34 -35
- data/test/functional/enabled_for_controller_test.rb +6 -7
- data/test/functional/modular_sinatra_test.rb +43 -38
- data/test/functional/sinatra_test.rb +49 -40
- data/test/functional/thread_safety_test.rb +4 -6
- data/test/paper_trail_test.rb +15 -14
- data/test/test_helper.rb +78 -18
- data/test/time_travel_helper.rb +1 -15
- data/test/unit/associations_test.rb +1016 -0
- data/test/unit/cleaner_test.rb +66 -60
- data/test/unit/inheritance_column_test.rb +19 -19
- data/test/unit/model_test.rb +646 -1071
- data/test/unit/protected_attrs_test.rb +19 -14
- data/test/unit/serializer_test.rb +44 -43
- data/test/unit/serializers/json_test.rb +28 -21
- data/test/unit/serializers/mixin_json_test.rb +15 -14
- data/test/unit/serializers/mixin_yaml_test.rb +20 -16
- data/test/unit/serializers/yaml_test.rb +16 -14
- data/test/unit/timestamp_test.rb +10 -12
- data/test/unit/version_test.rb +88 -70
- metadata +166 -72
- data/gemfiles/3.0.gemfile +0 -52
@@ -1,32 +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
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
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|
|
20
|
+
t.string :name
|
21
|
+
t.datetime :another_timestamp
|
22
|
+
t.timestamps null: true
|
6
23
|
end
|
7
24
|
|
8
|
-
create_table :widgets, :
|
25
|
+
create_table :widgets, force: true do |t|
|
9
26
|
t.string :name
|
10
27
|
t.text :a_text
|
11
28
|
t.integer :an_integer
|
12
29
|
t.float :a_float
|
13
|
-
t.decimal :a_decimal, :
|
30
|
+
t.decimal :a_decimal, precision: 6, scale: 4
|
14
31
|
t.datetime :a_datetime
|
15
32
|
t.time :a_time
|
16
33
|
t.date :a_date
|
17
34
|
t.boolean :a_boolean
|
18
35
|
t.string :sacrificial_column
|
19
36
|
t.string :type
|
20
|
-
t.timestamps :
|
37
|
+
t.timestamps null: true
|
21
38
|
end
|
22
39
|
|
23
|
-
create_table :versions,
|
24
|
-
t.string :item_type, :
|
25
|
-
t.integer :item_id, :
|
26
|
-
t.string :event, :
|
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
|
27
44
|
t.string :whodunnit
|
28
|
-
t.text :object
|
29
|
-
t.text :object_changes
|
45
|
+
t.text :object, limit: TEXT_BYTES
|
46
|
+
t.text :object_changes, limit: TEXT_BYTES
|
30
47
|
t.integer :transaction_id
|
31
48
|
t.datetime :created_at
|
32
49
|
|
@@ -45,16 +62,18 @@ class SetUpTestTables < ActiveRecord::Migration
|
|
45
62
|
|
46
63
|
create_table :version_associations do |t|
|
47
64
|
t.integer :version_id
|
48
|
-
t.string :foreign_key_name, :
|
65
|
+
t.string :foreign_key_name, null: false
|
49
66
|
t.integer :foreign_key_id
|
50
67
|
end
|
51
68
|
add_index :version_associations, [:version_id]
|
52
|
-
add_index :version_associations,
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
t.string :
|
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
|
58
77
|
t.string :whodunnit
|
59
78
|
t.text :object
|
60
79
|
t.datetime :created_at
|
@@ -65,11 +84,11 @@ class SetUpTestTables < ActiveRecord::Migration
|
|
65
84
|
end
|
66
85
|
add_index :post_versions, [:item_type, :item_id]
|
67
86
|
|
68
|
-
if ENV[
|
69
|
-
create_table :json_versions, :
|
70
|
-
t.string :item_type, :
|
71
|
-
t.integer :item_id, :
|
72
|
-
t.string :event, :
|
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
|
73
92
|
t.string :whodunnit
|
74
93
|
t.json :object
|
75
94
|
t.json :object_changes
|
@@ -78,141 +97,188 @@ class SetUpTestTables < ActiveRecord::Migration
|
|
78
97
|
add_index :json_versions, [:item_type, :item_id]
|
79
98
|
end
|
80
99
|
|
81
|
-
create_table :not_on_updates, :
|
82
|
-
t.timestamps :
|
100
|
+
create_table :not_on_updates, force: true do |t|
|
101
|
+
t.timestamps null: true
|
83
102
|
end
|
84
103
|
|
85
|
-
create_table :bananas, :
|
86
|
-
t.timestamps :
|
104
|
+
create_table :bananas, force: true do |t|
|
105
|
+
t.timestamps null: true
|
87
106
|
end
|
88
107
|
|
89
|
-
create_table :banana_versions, :
|
90
|
-
t.string :item_type, :
|
91
|
-
t.integer :item_id, :
|
92
|
-
t.string :event, :
|
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
|
93
112
|
t.string :whodunnit
|
94
113
|
t.text :object
|
95
114
|
t.datetime :created_at
|
96
115
|
end
|
97
116
|
add_index :banana_versions, [:item_type, :item_id]
|
98
117
|
|
99
|
-
create_table :wotsits, :
|
118
|
+
create_table :wotsits, force: true do |t|
|
100
119
|
t.integer :widget_id
|
101
120
|
t.string :name
|
102
|
-
t.timestamps :
|
121
|
+
t.timestamps null: true
|
103
122
|
end
|
104
123
|
|
105
|
-
create_table :fluxors, :
|
124
|
+
create_table :fluxors, force: true do |t|
|
106
125
|
t.integer :widget_id
|
107
126
|
t.string :name
|
108
127
|
end
|
109
128
|
|
110
|
-
create_table :whatchamajiggers, :
|
129
|
+
create_table :whatchamajiggers, force: true do |t|
|
111
130
|
t.string :owner_type
|
112
131
|
t.integer :owner_id
|
113
132
|
t.string :name
|
114
133
|
end
|
115
134
|
|
116
|
-
create_table :articles, :
|
135
|
+
create_table :articles, force: true do |t|
|
117
136
|
t.string :title
|
118
137
|
t.string :content
|
119
138
|
t.string :abstract
|
120
139
|
t.string :file_upload
|
121
140
|
end
|
122
141
|
|
123
|
-
create_table :books, :
|
142
|
+
create_table :books, force: true do |t|
|
124
143
|
t.string :title
|
125
144
|
end
|
126
145
|
|
127
|
-
create_table :authorships, :
|
146
|
+
create_table :authorships, force: true do |t|
|
128
147
|
t.integer :book_id
|
129
|
-
t.integer :
|
148
|
+
t.integer :author_id
|
130
149
|
end
|
131
150
|
|
132
|
-
create_table :people, :
|
151
|
+
create_table :people, force: true do |t|
|
133
152
|
t.string :name
|
134
153
|
t.string :time_zone
|
135
154
|
end
|
136
155
|
|
137
|
-
create_table :editorships, :
|
156
|
+
create_table :editorships, force: true do |t|
|
138
157
|
t.integer :book_id
|
139
158
|
t.integer :editor_id
|
140
159
|
end
|
141
160
|
|
142
|
-
create_table :editors, :
|
161
|
+
create_table :editors, force: true do |t|
|
143
162
|
t.string :name
|
144
163
|
end
|
145
164
|
|
146
|
-
create_table :songs, :
|
165
|
+
create_table :songs, force: true do |t|
|
147
166
|
t.integer :length
|
148
167
|
end
|
149
168
|
|
150
|
-
create_table :posts, :
|
169
|
+
create_table :posts, force: true do |t|
|
151
170
|
t.string :title
|
152
171
|
t.string :content
|
153
172
|
end
|
154
173
|
|
155
|
-
create_table :post_with_statuses, :
|
174
|
+
create_table :post_with_statuses, force: true do |t|
|
156
175
|
t.integer :status
|
157
176
|
end
|
158
177
|
|
159
|
-
create_table :animals, :
|
178
|
+
create_table :animals, force: true do |t|
|
160
179
|
t.string :name
|
161
|
-
t.string :species
|
180
|
+
t.string :species # single table inheritance column
|
162
181
|
end
|
163
182
|
|
164
|
-
create_table :documents, :
|
183
|
+
create_table :documents, force: true do |t|
|
165
184
|
t.string :name
|
166
185
|
end
|
167
186
|
|
168
|
-
create_table :legacy_widgets, :
|
187
|
+
create_table :legacy_widgets, force: true do |t|
|
169
188
|
t.string :name
|
170
189
|
t.integer :version
|
171
190
|
end
|
172
191
|
|
173
|
-
create_table :things, :
|
192
|
+
create_table :things, force: true do |t|
|
174
193
|
t.string :name
|
175
194
|
end
|
176
195
|
|
177
|
-
create_table :translations, :
|
196
|
+
create_table :translations, force: true do |t|
|
178
197
|
t.string :headline
|
179
198
|
t.string :content
|
180
199
|
t.string :language_code
|
181
200
|
t.string :type
|
182
201
|
end
|
183
202
|
|
184
|
-
create_table :gadgets, :
|
203
|
+
create_table :gadgets, force: true do |t|
|
185
204
|
t.string :name
|
186
205
|
t.string :brand
|
187
|
-
t.timestamps :
|
206
|
+
t.timestamps null: true
|
188
207
|
end
|
189
208
|
|
190
|
-
create_table :customers, :
|
191
|
-
t.string
|
209
|
+
create_table :customers, force: true do |t|
|
210
|
+
t.string :name
|
192
211
|
end
|
193
212
|
|
194
|
-
create_table :orders, :
|
213
|
+
create_table :orders, force: true do |t|
|
195
214
|
t.integer :customer_id
|
196
215
|
t.string :order_date
|
197
216
|
end
|
198
217
|
|
199
|
-
create_table :line_items, :
|
218
|
+
create_table :line_items, force: true do |t|
|
200
219
|
t.integer :order_id
|
201
220
|
t.string :product
|
202
221
|
end
|
203
222
|
|
204
|
-
create_table :fruits, :
|
223
|
+
create_table :fruits, force: true do |t|
|
205
224
|
t.string :name
|
206
225
|
t.string :color
|
207
226
|
end
|
208
227
|
|
209
|
-
create_table :boolits, :
|
228
|
+
create_table :boolits, force: true do |t|
|
229
|
+
t.string :name
|
230
|
+
t.boolean :scoped, default: true
|
231
|
+
end
|
232
|
+
|
233
|
+
create_table :callback_modifiers, force: true do |t|
|
234
|
+
t.string :some_content
|
235
|
+
t.boolean :deleted, default: false
|
236
|
+
end
|
237
|
+
|
238
|
+
create_table :chapters, force: true do |t|
|
239
|
+
t.string :name
|
240
|
+
end
|
241
|
+
|
242
|
+
create_table :sections, force: true do |t|
|
243
|
+
t.integer :chapter_id
|
244
|
+
t.string :name
|
245
|
+
end
|
246
|
+
|
247
|
+
create_table :paragraphs, force: true do |t|
|
248
|
+
t.integer :section_id
|
210
249
|
t.string :name
|
211
|
-
t.boolean :scoped, :default => true
|
212
250
|
end
|
251
|
+
|
252
|
+
create_table :quotations, force: true do |t|
|
253
|
+
t.integer :chapter_id
|
254
|
+
end
|
255
|
+
|
256
|
+
create_table :citations, force: true do |t|
|
257
|
+
t.integer :quotation_id
|
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]
|
213
274
|
end
|
214
275
|
|
215
|
-
def
|
276
|
+
def down
|
277
|
+
drop_table :bar_habtms_foo_habtms
|
278
|
+
drop_table :foo_habtms
|
279
|
+
drop_table :bar_habtms
|
280
|
+
drop_table :citations
|
281
|
+
drop_table :quotations
|
216
282
|
drop_table :animals
|
217
283
|
drop_table :skippers
|
218
284
|
drop_table :not_on_updates
|
@@ -227,12 +293,12 @@ class SetUpTestTables < ActiveRecord::Migration
|
|
227
293
|
drop_table :whatchamajiggers
|
228
294
|
drop_table :fluxors
|
229
295
|
drop_table :wotsits
|
230
|
-
remove_index :post_versions, :
|
296
|
+
remove_index :post_versions, column: [:item_type, :item_id]
|
231
297
|
drop_table :post_versions
|
232
|
-
remove_index :versions, :
|
298
|
+
remove_index :versions, column: [:item_type, :item_id]
|
233
299
|
drop_table :versions
|
234
300
|
if JsonVersion.table_exists?
|
235
|
-
remove_index :json_versions, :
|
301
|
+
remove_index :json_versions, column: [:item_type, :item_id]
|
236
302
|
drop_table :json_versions
|
237
303
|
end
|
238
304
|
drop_table :widgets
|
@@ -246,8 +312,22 @@ class SetUpTestTables < ActiveRecord::Migration
|
|
246
312
|
drop_table :line_items
|
247
313
|
drop_table :fruits
|
248
314
|
drop_table :boolits
|
249
|
-
|
250
|
-
|
315
|
+
drop_table :chapters
|
316
|
+
drop_table :sections
|
317
|
+
drop_table :paragraphs
|
318
|
+
remove_index :version_associations, column: [:version_id]
|
319
|
+
remove_index :version_associations, name: "index_version_associations_on_foreign_key"
|
251
320
|
drop_table :version_associations
|
321
|
+
drop_table :callback_modifiers
|
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
|
252
332
|
end
|
253
333
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -13,77 +13,142 @@
|
|
13
13
|
|
14
14
|
ActiveRecord::Schema.define(version: 20110208155312) do
|
15
15
|
|
16
|
-
create_table "animals", force:
|
16
|
+
create_table "animals", force: :cascade do |t|
|
17
17
|
t.string "name"
|
18
18
|
t.string "species"
|
19
19
|
end
|
20
20
|
|
21
|
-
create_table "articles", force:
|
21
|
+
create_table "articles", force: :cascade do |t|
|
22
22
|
t.string "title"
|
23
23
|
t.string "content"
|
24
24
|
t.string "abstract"
|
25
25
|
t.string "file_upload"
|
26
26
|
end
|
27
27
|
|
28
|
-
create_table "authorships", force:
|
28
|
+
create_table "authorships", force: :cascade do |t|
|
29
29
|
t.integer "book_id"
|
30
|
-
t.integer "
|
30
|
+
t.integer "author_id"
|
31
31
|
end
|
32
32
|
|
33
|
-
create_table "
|
33
|
+
create_table "banana_versions", force: :cascade do |t|
|
34
|
+
t.string "item_type", null: false
|
35
|
+
t.integer "item_id", null: false
|
36
|
+
t.string "event", null: false
|
37
|
+
t.string "whodunnit"
|
38
|
+
t.text "object"
|
39
|
+
t.datetime "created_at"
|
40
|
+
end
|
41
|
+
|
42
|
+
add_index "banana_versions", ["item_type", "item_id"], name: "index_banana_versions_on_item_type_and_item_id"
|
43
|
+
|
44
|
+
create_table "bananas", force: :cascade do |t|
|
45
|
+
t.datetime "created_at"
|
46
|
+
t.datetime "updated_at"
|
47
|
+
end
|
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
|
+
|
61
|
+
create_table "books", force: :cascade do |t|
|
34
62
|
t.string "title"
|
35
63
|
end
|
36
64
|
|
37
|
-
create_table "
|
65
|
+
create_table "boolits", force: :cascade do |t|
|
66
|
+
t.string "name"
|
67
|
+
t.boolean "scoped", default: true
|
68
|
+
end
|
69
|
+
|
70
|
+
create_table "callback_modifiers", force: :cascade do |t|
|
71
|
+
t.string "some_content"
|
72
|
+
t.boolean "deleted", default: false
|
73
|
+
end
|
74
|
+
|
75
|
+
create_table "chapters", force: :cascade do |t|
|
38
76
|
t.string "name"
|
39
77
|
end
|
40
78
|
|
41
|
-
create_table "
|
79
|
+
create_table "citations", force: :cascade do |t|
|
80
|
+
t.integer "quotation_id"
|
81
|
+
end
|
82
|
+
|
83
|
+
create_table "customers", force: :cascade do |t|
|
42
84
|
t.string "name"
|
43
85
|
end
|
44
86
|
|
45
|
-
create_table "
|
87
|
+
create_table "documents", force: :cascade do |t|
|
46
88
|
t.string "name"
|
47
89
|
end
|
48
90
|
|
49
|
-
create_table "
|
91
|
+
create_table "editors", force: :cascade do |t|
|
92
|
+
t.string "name"
|
93
|
+
end
|
94
|
+
|
95
|
+
create_table "editorships", force: :cascade do |t|
|
50
96
|
t.integer "book_id"
|
51
97
|
t.integer "editor_id"
|
52
98
|
end
|
53
99
|
|
54
|
-
create_table "fluxors", force:
|
100
|
+
create_table "fluxors", force: :cascade do |t|
|
55
101
|
t.integer "widget_id"
|
56
102
|
t.string "name"
|
57
103
|
end
|
58
104
|
|
59
|
-
create_table "
|
105
|
+
create_table "foo_habtms", force: :cascade do |t|
|
106
|
+
t.string "name"
|
107
|
+
end
|
108
|
+
|
109
|
+
create_table "fruits", force: :cascade do |t|
|
110
|
+
t.string "name"
|
111
|
+
t.string "color"
|
112
|
+
end
|
113
|
+
|
114
|
+
create_table "gadgets", force: :cascade do |t|
|
60
115
|
t.string "name"
|
61
116
|
t.string "brand"
|
62
117
|
t.datetime "created_at"
|
63
118
|
t.datetime "updated_at"
|
64
119
|
end
|
65
120
|
|
66
|
-
create_table "legacy_widgets", force:
|
121
|
+
create_table "legacy_widgets", force: :cascade do |t|
|
67
122
|
t.string "name"
|
68
123
|
t.integer "version"
|
69
124
|
end
|
70
125
|
|
71
|
-
create_table "line_items", force:
|
126
|
+
create_table "line_items", force: :cascade do |t|
|
72
127
|
t.integer "order_id"
|
73
128
|
t.string "product"
|
74
129
|
end
|
75
130
|
|
76
|
-
create_table "
|
131
|
+
create_table "not_on_updates", force: :cascade do |t|
|
132
|
+
t.datetime "created_at"
|
133
|
+
t.datetime "updated_at"
|
134
|
+
end
|
135
|
+
|
136
|
+
create_table "orders", force: :cascade do |t|
|
77
137
|
t.integer "customer_id"
|
78
138
|
t.string "order_date"
|
79
139
|
end
|
80
140
|
|
81
|
-
create_table "
|
141
|
+
create_table "paragraphs", force: :cascade do |t|
|
142
|
+
t.integer "section_id"
|
143
|
+
t.string "name"
|
144
|
+
end
|
145
|
+
|
146
|
+
create_table "people", force: :cascade do |t|
|
82
147
|
t.string "name"
|
83
148
|
t.string "time_zone"
|
84
149
|
end
|
85
150
|
|
86
|
-
create_table "post_versions", force:
|
151
|
+
create_table "post_versions", force: :cascade do |t|
|
87
152
|
t.string "item_type", null: false
|
88
153
|
t.integer "item_id", null: false
|
89
154
|
t.string "event", null: false
|
@@ -96,31 +161,54 @@ ActiveRecord::Schema.define(version: 20110208155312) do
|
|
96
161
|
|
97
162
|
add_index "post_versions", ["item_type", "item_id"], name: "index_post_versions_on_item_type_and_item_id"
|
98
163
|
|
99
|
-
create_table "post_with_statuses", force:
|
164
|
+
create_table "post_with_statuses", force: :cascade do |t|
|
100
165
|
t.integer "status"
|
101
166
|
end
|
102
167
|
|
103
|
-
create_table "posts", force:
|
168
|
+
create_table "posts", force: :cascade do |t|
|
104
169
|
t.string "title"
|
105
170
|
t.string "content"
|
106
171
|
end
|
107
172
|
|
108
|
-
create_table "
|
173
|
+
create_table "quotations", force: :cascade do |t|
|
174
|
+
t.integer "chapter_id"
|
175
|
+
end
|
176
|
+
|
177
|
+
create_table "sections", force: :cascade do |t|
|
178
|
+
t.integer "chapter_id"
|
179
|
+
t.string "name"
|
180
|
+
end
|
181
|
+
|
182
|
+
create_table "skippers", force: :cascade do |t|
|
183
|
+
t.string "name"
|
184
|
+
t.datetime "another_timestamp"
|
185
|
+
t.datetime "created_at"
|
186
|
+
t.datetime "updated_at"
|
187
|
+
end
|
188
|
+
|
189
|
+
create_table "songs", force: :cascade do |t|
|
109
190
|
t.integer "length"
|
110
191
|
end
|
111
192
|
|
112
|
-
create_table "things", force:
|
193
|
+
create_table "things", force: :cascade do |t|
|
113
194
|
t.string "name"
|
114
195
|
end
|
115
196
|
|
116
|
-
create_table "translations", force:
|
197
|
+
create_table "translations", force: :cascade do |t|
|
117
198
|
t.string "headline"
|
118
199
|
t.string "content"
|
119
200
|
t.string "language_code"
|
120
201
|
t.string "type"
|
121
202
|
end
|
122
203
|
|
123
|
-
create_table "
|
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
|
+
|
211
|
+
create_table "version_associations", force: :cascade do |t|
|
124
212
|
t.integer "version_id"
|
125
213
|
t.string "foreign_key_name", null: false
|
126
214
|
t.integer "foreign_key_id"
|
@@ -129,13 +217,13 @@ ActiveRecord::Schema.define(version: 20110208155312) do
|
|
129
217
|
add_index "version_associations", ["foreign_key_name", "foreign_key_id"], name: "index_version_associations_on_foreign_key"
|
130
218
|
add_index "version_associations", ["version_id"], name: "index_version_associations_on_version_id"
|
131
219
|
|
132
|
-
create_table "versions", force:
|
133
|
-
t.string "item_type",
|
134
|
-
t.integer "item_id",
|
135
|
-
t.string "event",
|
220
|
+
create_table "versions", force: :cascade do |t|
|
221
|
+
t.string "item_type", null: false
|
222
|
+
t.integer "item_id", null: false
|
223
|
+
t.string "event", null: false
|
136
224
|
t.string "whodunnit"
|
137
|
-
t.text "object"
|
138
|
-
t.text "object_changes"
|
225
|
+
t.text "object", limit: 1073741823
|
226
|
+
t.text "object_changes", limit: 1073741823
|
139
227
|
t.integer "transaction_id"
|
140
228
|
t.datetime "created_at"
|
141
229
|
t.integer "answer"
|
@@ -149,13 +237,13 @@ ActiveRecord::Schema.define(version: 20110208155312) do
|
|
149
237
|
|
150
238
|
add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
|
151
239
|
|
152
|
-
create_table "whatchamajiggers", force:
|
240
|
+
create_table "whatchamajiggers", force: :cascade do |t|
|
153
241
|
t.string "owner_type"
|
154
242
|
t.integer "owner_id"
|
155
243
|
t.string "name"
|
156
244
|
end
|
157
245
|
|
158
|
-
create_table "widgets", force:
|
246
|
+
create_table "widgets", force: :cascade do |t|
|
159
247
|
t.string "name"
|
160
248
|
t.text "a_text"
|
161
249
|
t.integer "an_integer"
|
@@ -171,7 +259,7 @@ ActiveRecord::Schema.define(version: 20110208155312) do
|
|
171
259
|
t.datetime "updated_at"
|
172
260
|
end
|
173
261
|
|
174
|
-
create_table "wotsits", force:
|
262
|
+
create_table "wotsits", force: :cascade do |t|
|
175
263
|
t.integer "widget_id"
|
176
264
|
t.string "name"
|
177
265
|
t.datetime "created_at"
|
data/test/dummy/script/rails
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems
|
4
|
+
# installed from the root of your application.
|
5
|
+
|
6
|
+
APP_PATH = File.expand_path("../../config/application", __FILE__)
|
7
|
+
require File.expand_path("../../config/boot", __FILE__)
|
8
|
+
require "rails/commands"
|