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.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +105 -0
  3. data/.github/ISSUE_TEMPLATE.md +13 -0
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +100 -0
  6. data/.rubocop_todo.yml +14 -0
  7. data/.travis.yml +11 -10
  8. data/Appraisals +37 -0
  9. data/CHANGELOG.md +173 -8
  10. data/Gemfile +1 -1
  11. data/README.md +641 -470
  12. data/Rakefile +19 -19
  13. data/doc/bug_report_template.rb +71 -0
  14. data/doc/warning_about_not_setting_whodunnit.md +32 -0
  15. data/gemfiles/ar3.gemfile +18 -0
  16. data/gemfiles/ar4.gemfile +7 -0
  17. data/gemfiles/ar5.gemfile +13 -0
  18. data/lib/generators/paper_trail/install_generator.rb +26 -18
  19. data/lib/generators/paper_trail/templates/add_object_changes_to_versions.rb +3 -1
  20. data/lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb +2 -0
  21. data/lib/generators/paper_trail/templates/create_version_associations.rb +9 -4
  22. data/lib/generators/paper_trail/templates/create_versions.rb +53 -5
  23. data/lib/paper_trail/attribute_serializers/README.md +10 -0
  24. data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +58 -0
  25. data/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +48 -0
  26. data/lib/paper_trail/attribute_serializers/object_attribute.rb +39 -0
  27. data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +42 -0
  28. data/lib/paper_trail/cleaner.rb +41 -18
  29. data/lib/paper_trail/config.rb +42 -26
  30. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +5 -1
  31. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +6 -2
  32. data/lib/paper_trail/frameworks/active_record.rb +2 -2
  33. data/lib/paper_trail/frameworks/cucumber.rb +1 -0
  34. data/lib/paper_trail/frameworks/rails/controller.rb +50 -14
  35. data/lib/paper_trail/frameworks/rails/engine.rb +6 -1
  36. data/lib/paper_trail/frameworks/rails.rb +2 -7
  37. data/lib/paper_trail/frameworks/rspec/helpers.rb +3 -1
  38. data/lib/paper_trail/frameworks/rspec.rb +5 -5
  39. data/lib/paper_trail/frameworks/sinatra.rb +8 -5
  40. data/lib/paper_trail/has_paper_trail.rb +381 -221
  41. data/lib/paper_trail/record_history.rb +57 -0
  42. data/lib/paper_trail/reifier.rb +450 -0
  43. data/lib/paper_trail/serializers/json.rb +7 -7
  44. data/lib/paper_trail/serializers/yaml.rb +31 -12
  45. data/lib/paper_trail/version_association_concern.rb +6 -2
  46. data/lib/paper_trail/version_concern.rb +200 -287
  47. data/lib/paper_trail/version_number.rb +6 -9
  48. data/lib/paper_trail.rb +169 -137
  49. data/paper_trail.gemspec +41 -43
  50. data/spec/generators/install_generator_spec.rb +24 -25
  51. data/spec/generators/paper_trail/templates/create_versions_spec.rb +51 -0
  52. data/spec/models/animal_spec.rb +23 -6
  53. data/spec/models/boolit_spec.rb +8 -8
  54. data/spec/models/callback_modifier_spec.rb +96 -0
  55. data/spec/models/car_spec.rb +13 -0
  56. data/spec/models/fluxor_spec.rb +3 -3
  57. data/spec/models/gadget_spec.rb +19 -19
  58. data/spec/models/joined_version_spec.rb +3 -3
  59. data/spec/models/json_version_spec.rb +50 -28
  60. data/spec/models/kitchen/banana_spec.rb +3 -3
  61. data/spec/models/not_on_update_spec.rb +7 -4
  62. data/spec/models/post_with_status_spec.rb +13 -3
  63. data/spec/models/skipper_spec.rb +40 -11
  64. data/spec/models/thing_spec.rb +4 -4
  65. data/spec/models/truck_spec.rb +5 -0
  66. data/spec/models/vehicle_spec.rb +5 -0
  67. data/spec/models/version_spec.rb +103 -59
  68. data/spec/models/widget_spec.rb +86 -55
  69. data/spec/modules/paper_trail_spec.rb +2 -2
  70. data/spec/modules/version_concern_spec.rb +11 -12
  71. data/spec/modules/version_number_spec.rb +3 -4
  72. data/spec/paper_trail/config_spec.rb +33 -0
  73. data/spec/paper_trail_spec.rb +16 -14
  74. data/spec/rails_helper.rb +10 -9
  75. data/spec/requests/articles_spec.rb +11 -7
  76. data/spec/spec_helper.rb +42 -17
  77. data/spec/support/alt_db_init.rb +8 -13
  78. data/test/custom_json_serializer.rb +3 -3
  79. data/test/dummy/Rakefile +2 -2
  80. data/test/dummy/app/controllers/application_controller.rb +21 -8
  81. data/test/dummy/app/controllers/articles_controller.rb +11 -8
  82. data/test/dummy/app/controllers/widgets_controller.rb +13 -12
  83. data/test/dummy/app/models/animal.rb +1 -1
  84. data/test/dummy/app/models/article.rb +19 -11
  85. data/test/dummy/app/models/authorship.rb +1 -1
  86. data/test/dummy/app/models/bar_habtm.rb +4 -0
  87. data/test/dummy/app/models/book.rb +4 -4
  88. data/test/dummy/app/models/boolit.rb +1 -1
  89. data/test/dummy/app/models/callback_modifier.rb +45 -0
  90. data/test/dummy/app/models/car.rb +3 -0
  91. data/test/dummy/app/models/chapter.rb +9 -0
  92. data/test/dummy/app/models/citation.rb +5 -0
  93. data/test/dummy/app/models/customer.rb +1 -1
  94. data/test/dummy/app/models/document.rb +2 -2
  95. data/test/dummy/app/models/editor.rb +1 -1
  96. data/test/dummy/app/models/foo_habtm.rb +5 -0
  97. data/test/dummy/app/models/fruit.rb +2 -2
  98. data/test/dummy/app/models/gadget.rb +1 -1
  99. data/test/dummy/app/models/kitchen/banana.rb +1 -1
  100. data/test/dummy/app/models/legacy_widget.rb +2 -2
  101. data/test/dummy/app/models/line_item.rb +1 -1
  102. data/test/dummy/app/models/not_on_update.rb +1 -1
  103. data/test/dummy/app/models/paragraph.rb +5 -0
  104. data/test/dummy/app/models/person.rb +6 -6
  105. data/test/dummy/app/models/post.rb +1 -1
  106. data/test/dummy/app/models/post_with_status.rb +1 -1
  107. data/test/dummy/app/models/quotation.rb +5 -0
  108. data/test/dummy/app/models/section.rb +6 -0
  109. data/test/dummy/app/models/skipper.rb +2 -2
  110. data/test/dummy/app/models/song.rb +13 -4
  111. data/test/dummy/app/models/thing.rb +2 -2
  112. data/test/dummy/app/models/translation.rb +2 -2
  113. data/test/dummy/app/models/truck.rb +4 -0
  114. data/test/dummy/app/models/vehicle.rb +4 -0
  115. data/test/dummy/app/models/whatchamajigger.rb +1 -1
  116. data/test/dummy/app/models/widget.rb +7 -6
  117. data/test/dummy/app/versions/joined_version.rb +4 -3
  118. data/test/dummy/app/versions/json_version.rb +1 -1
  119. data/test/dummy/app/versions/kitchen/banana_version.rb +1 -1
  120. data/test/dummy/app/versions/post_version.rb +2 -2
  121. data/test/dummy/config/application.rb +20 -9
  122. data/test/dummy/config/boot.rb +5 -5
  123. data/test/dummy/config/database.postgres.yml +1 -1
  124. data/test/dummy/config/environment.rb +1 -1
  125. data/test/dummy/config/environments/development.rb +4 -3
  126. data/test/dummy/config/environments/production.rb +3 -2
  127. data/test/dummy/config/environments/test.rb +15 -5
  128. data/test/dummy/config/initializers/backtrace_silencers.rb +4 -2
  129. data/test/dummy/config/initializers/paper_trail.rb +4 -3
  130. data/test/dummy/config/initializers/secret_token.rb +3 -1
  131. data/test/dummy/config/initializers/session_store.rb +1 -1
  132. data/test/dummy/config/routes.rb +2 -2
  133. data/test/dummy/config.ru +1 -1
  134. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +148 -68
  135. data/test/dummy/db/schema.rb +119 -31
  136. data/test/dummy/script/rails +6 -4
  137. data/test/functional/controller_test.rb +34 -35
  138. data/test/functional/enabled_for_controller_test.rb +6 -7
  139. data/test/functional/modular_sinatra_test.rb +43 -38
  140. data/test/functional/sinatra_test.rb +49 -40
  141. data/test/functional/thread_safety_test.rb +4 -6
  142. data/test/paper_trail_test.rb +15 -14
  143. data/test/test_helper.rb +78 -18
  144. data/test/time_travel_helper.rb +1 -15
  145. data/test/unit/associations_test.rb +1016 -0
  146. data/test/unit/cleaner_test.rb +66 -60
  147. data/test/unit/inheritance_column_test.rb +19 -19
  148. data/test/unit/model_test.rb +646 -1071
  149. data/test/unit/protected_attrs_test.rb +19 -14
  150. data/test/unit/serializer_test.rb +44 -43
  151. data/test/unit/serializers/json_test.rb +28 -21
  152. data/test/unit/serializers/mixin_json_test.rb +15 -14
  153. data/test/unit/serializers/mixin_yaml_test.rb +20 -16
  154. data/test/unit/serializers/yaml_test.rb +16 -14
  155. data/test/unit/timestamp_test.rb +10 -12
  156. data/test/unit/version_test.rb +88 -70
  157. metadata +166 -72
  158. 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
- def self.up
3
- create_table :skippers, :force => true do |t|
4
- t.datetime :another_timestamp
5
- t.timestamps :null => true
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, :force => true do |t|
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, :precision => 6, :scale => 4
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 :null => true
37
+ t.timestamps null: true
21
38
  end
22
39
 
23
- create_table :versions, :force => true do |t|
24
- t.string :item_type, :null => false
25
- t.integer :item_id, :null => false
26
- 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
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, :null => false
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, [:foreign_key_name, :foreign_key_id], :name => 'index_version_associations_on_foreign_key'
53
-
54
- create_table :post_versions, :force => true do |t|
55
- t.string :item_type, :null => false
56
- t.integer :item_id, :null => false
57
- 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
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['DB'] == 'postgres' && ::ActiveRecord::VERSION::MAJOR >= 4
69
- create_table :json_versions, :force => true do |t|
70
- t.string :item_type, :null => false
71
- t.integer :item_id, :null => false
72
- 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
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, :force => true do |t|
82
- t.timestamps :null => true
100
+ create_table :not_on_updates, force: true do |t|
101
+ t.timestamps null: true
83
102
  end
84
103
 
85
- create_table :bananas, :force => true do |t|
86
- t.timestamps :null => true
104
+ create_table :bananas, force: true do |t|
105
+ t.timestamps null: true
87
106
  end
88
107
 
89
- create_table :banana_versions, :force => true do |t|
90
- t.string :item_type, :null => false
91
- t.integer :item_id, :null => false
92
- 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
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, :force => true do |t|
118
+ create_table :wotsits, force: true do |t|
100
119
  t.integer :widget_id
101
120
  t.string :name
102
- t.timestamps :null => true
121
+ t.timestamps null: true
103
122
  end
104
123
 
105
- create_table :fluxors, :force => true do |t|
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, :force => true do |t|
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, :force => true do |t|
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, :force => true do |t|
142
+ create_table :books, force: true do |t|
124
143
  t.string :title
125
144
  end
126
145
 
127
- create_table :authorships, :force => true do |t|
146
+ create_table :authorships, force: true do |t|
128
147
  t.integer :book_id
129
- t.integer :person_id
148
+ t.integer :author_id
130
149
  end
131
150
 
132
- create_table :people, :force => true do |t|
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, :force => true do |t|
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, :force => true do |t|
161
+ create_table :editors, force: true do |t|
143
162
  t.string :name
144
163
  end
145
164
 
146
- create_table :songs, :force => true do |t|
165
+ create_table :songs, force: true do |t|
147
166
  t.integer :length
148
167
  end
149
168
 
150
- create_table :posts, :force => true do |t|
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, :force => true do |t|
174
+ create_table :post_with_statuses, force: true do |t|
156
175
  t.integer :status
157
176
  end
158
177
 
159
- create_table :animals, :force => true do |t|
178
+ create_table :animals, force: true do |t|
160
179
  t.string :name
161
- t.string :species # single table inheritance column
180
+ t.string :species # single table inheritance column
162
181
  end
163
182
 
164
- create_table :documents, :force => true do |t|
183
+ create_table :documents, force: true do |t|
165
184
  t.string :name
166
185
  end
167
186
 
168
- create_table :legacy_widgets, :force => true do |t|
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, :force => true do |t|
192
+ create_table :things, force: true do |t|
174
193
  t.string :name
175
194
  end
176
195
 
177
- create_table :translations, :force => true do |t|
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, :force => true do |t|
203
+ create_table :gadgets, force: true do |t|
185
204
  t.string :name
186
205
  t.string :brand
187
- t.timestamps :null => true
206
+ t.timestamps null: true
188
207
  end
189
208
 
190
- create_table :customers, :force => true do |t|
191
- t.string :name
209
+ create_table :customers, force: true do |t|
210
+ t.string :name
192
211
  end
193
212
 
194
- create_table :orders, :force => true do |t|
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, :force => true do |t|
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, :force => true do |t|
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, :force => true do |t|
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 self.down
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, :column => [:item_type, :item_id]
296
+ remove_index :post_versions, column: [:item_type, :item_id]
231
297
  drop_table :post_versions
232
- remove_index :versions, :column => [:item_type, :item_id]
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, :column => [:item_type, :item_id]
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
- remove_index :version_associations, :column => [:version_id]
250
- remove_index :version_associations, :name => 'index_version_associations_on_foreign_key'
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
@@ -13,77 +13,142 @@
13
13
 
14
14
  ActiveRecord::Schema.define(version: 20110208155312) do
15
15
 
16
- create_table "animals", force: true do |t|
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: true do |t|
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: true do |t|
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
- create_table "books", force: true do |t|
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 "customers", force: true do |t|
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 "documents", force: true do |t|
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 "editors", force: true do |t|
87
+ create_table "documents", force: :cascade do |t|
46
88
  t.string "name"
47
89
  end
48
90
 
49
- create_table "editorships", force: true do |t|
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: true do |t|
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 "gadgets", force: true do |t|
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: true do |t|
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: true do |t|
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 "orders", force: true do |t|
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 "people", force: true do |t|
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: true do |t|
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: true do |t|
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: true do |t|
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 "songs", force: true do |t|
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: true do |t|
193
+ create_table "things", force: :cascade do |t|
113
194
  t.string "name"
114
195
  end
115
196
 
116
- create_table "translations", force: true do |t|
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 "version_associations", force: true do |t|
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: true do |t|
133
- t.string "item_type", null: false
134
- t.integer "item_id", null: false
135
- t.string "event", null: false
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: true do |t|
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: true do |t|
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: true do |t|
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"
@@ -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
- APP_PATH = File.expand_path('../../config/application', __FILE__)
5
- require File.expand_path('../../config/boot', __FILE__)
6
- require 'rails/commands'
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"