activerecord 5.0.7.2 → 6.0.3.4

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.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +708 -2040
  3. data/MIT-LICENSE +3 -1
  4. data/README.rdoc +9 -7
  5. data/examples/performance.rb +31 -29
  6. data/examples/simple.rb +5 -3
  7. data/lib/active_record.rb +37 -22
  8. data/lib/active_record/advisory_lock_base.rb +18 -0
  9. data/lib/active_record/aggregations.rb +249 -247
  10. data/lib/active_record/association_relation.rb +18 -14
  11. data/lib/active_record/associations.rb +1603 -1592
  12. data/lib/active_record/associations/alias_tracker.rb +24 -34
  13. data/lib/active_record/associations/association.rb +114 -55
  14. data/lib/active_record/associations/association_scope.rb +94 -94
  15. data/lib/active_record/associations/belongs_to_association.rb +58 -42
  16. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +8 -12
  17. data/lib/active_record/associations/builder/association.rb +18 -25
  18. data/lib/active_record/associations/builder/belongs_to.rb +43 -54
  19. data/lib/active_record/associations/builder/collection_association.rb +7 -18
  20. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +41 -62
  21. data/lib/active_record/associations/builder/has_many.rb +4 -0
  22. data/lib/active_record/associations/builder/has_one.rb +37 -1
  23. data/lib/active_record/associations/builder/singular_association.rb +4 -0
  24. data/lib/active_record/associations/collection_association.rb +86 -254
  25. data/lib/active_record/associations/collection_proxy.rb +158 -122
  26. data/lib/active_record/associations/foreign_association.rb +9 -0
  27. data/lib/active_record/associations/has_many_association.rb +23 -30
  28. data/lib/active_record/associations/has_many_through_association.rb +58 -44
  29. data/lib/active_record/associations/has_one_association.rb +59 -54
  30. data/lib/active_record/associations/has_one_through_association.rb +20 -11
  31. data/lib/active_record/associations/join_dependency.rb +143 -176
  32. data/lib/active_record/associations/join_dependency/join_association.rb +38 -87
  33. data/lib/active_record/associations/join_dependency/join_base.rb +10 -9
  34. data/lib/active_record/associations/join_dependency/join_part.rb +12 -12
  35. data/lib/active_record/associations/preloader.rb +90 -103
  36. data/lib/active_record/associations/preloader/association.rb +86 -100
  37. data/lib/active_record/associations/preloader/through_association.rb +77 -76
  38. data/lib/active_record/associations/singular_association.rb +12 -45
  39. data/lib/active_record/associations/through_association.rb +26 -14
  40. data/lib/active_record/attribute_assignment.rb +54 -61
  41. data/lib/active_record/attribute_decorators.rb +38 -17
  42. data/lib/active_record/attribute_methods.rb +66 -106
  43. data/lib/active_record/attribute_methods/before_type_cast.rb +12 -8
  44. data/lib/active_record/attribute_methods/dirty.rb +179 -109
  45. data/lib/active_record/attribute_methods/primary_key.rb +85 -92
  46. data/lib/active_record/attribute_methods/query.rb +4 -3
  47. data/lib/active_record/attribute_methods/read.rb +20 -49
  48. data/lib/active_record/attribute_methods/serialization.rb +29 -7
  49. data/lib/active_record/attribute_methods/time_zone_conversion.rb +39 -66
  50. data/lib/active_record/attribute_methods/write.rb +34 -33
  51. data/lib/active_record/attributes.rb +38 -25
  52. data/lib/active_record/autosave_association.rb +54 -35
  53. data/lib/active_record/base.rb +27 -24
  54. data/lib/active_record/callbacks.rb +64 -35
  55. data/lib/active_record/coders/json.rb +2 -0
  56. data/lib/active_record/coders/yaml_column.rb +11 -12
  57. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +552 -323
  58. data/lib/active_record/connection_adapters/abstract/database_limits.rb +23 -5
  59. data/lib/active_record/connection_adapters/abstract/database_statements.rb +215 -94
  60. data/lib/active_record/connection_adapters/abstract/query_cache.rb +59 -35
  61. data/lib/active_record/connection_adapters/abstract/quoting.rb +119 -75
  62. data/lib/active_record/connection_adapters/abstract/savepoints.rb +2 -0
  63. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +33 -28
  64. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +228 -147
  65. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +68 -80
  66. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +400 -213
  67. data/lib/active_record/connection_adapters/abstract/transaction.rb +169 -79
  68. data/lib/active_record/connection_adapters/abstract_adapter.rb +367 -202
  69. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +396 -562
  70. data/lib/active_record/connection_adapters/column.rb +41 -13
  71. data/lib/active_record/connection_adapters/connection_specification.rb +172 -139
  72. data/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb +11 -4
  73. data/lib/active_record/connection_adapters/mysql/column.rb +8 -31
  74. data/lib/active_record/connection_adapters/mysql/database_statements.rb +137 -49
  75. data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +24 -23
  76. data/lib/active_record/connection_adapters/mysql/quoting.rb +50 -20
  77. data/lib/active_record/connection_adapters/mysql/schema_creation.rb +49 -45
  78. data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +58 -56
  79. data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +70 -36
  80. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +264 -0
  81. data/lib/active_record/connection_adapters/mysql/type_metadata.rb +12 -13
  82. data/lib/active_record/connection_adapters/mysql2_adapter.rb +48 -30
  83. data/lib/active_record/connection_adapters/postgresql/column.rb +19 -31
  84. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +64 -54
  85. data/lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb +5 -3
  86. data/lib/active_record/connection_adapters/postgresql/oid.rb +24 -21
  87. data/lib/active_record/connection_adapters/postgresql/oid/array.rb +22 -11
  88. data/lib/active_record/connection_adapters/postgresql/oid/bit.rb +6 -5
  89. data/lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb +2 -0
  90. data/lib/active_record/connection_adapters/postgresql/oid/bytea.rb +2 -0
  91. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +3 -1
  92. data/lib/active_record/connection_adapters/postgresql/oid/date.rb +23 -0
  93. data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +4 -2
  94. data/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +3 -1
  95. data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +5 -4
  96. data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +19 -18
  97. data/lib/active_record/connection_adapters/postgresql/oid/inet.rb +2 -0
  98. data/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +3 -11
  99. data/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb +44 -0
  100. data/lib/active_record/connection_adapters/postgresql/oid/money.rb +7 -5
  101. data/lib/active_record/connection_adapters/postgresql/oid/{json.rb → oid.rb} +6 -1
  102. data/lib/active_record/connection_adapters/postgresql/oid/point.rb +30 -9
  103. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +34 -31
  104. data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +4 -1
  105. data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +58 -54
  106. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +8 -4
  107. data/lib/active_record/connection_adapters/postgresql/oid/vector.rb +2 -0
  108. data/lib/active_record/connection_adapters/postgresql/oid/xml.rb +2 -0
  109. data/lib/active_record/connection_adapters/postgresql/quoting.rb +95 -35
  110. data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +20 -26
  111. data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +76 -0
  112. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +147 -105
  113. data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +34 -32
  114. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +378 -308
  115. data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +26 -25
  116. data/lib/active_record/connection_adapters/postgresql/utils.rb +9 -6
  117. data/lib/active_record/connection_adapters/postgresql_adapter.rb +383 -275
  118. data/lib/active_record/connection_adapters/schema_cache.rb +46 -12
  119. data/lib/active_record/connection_adapters/sql_type_metadata.rb +13 -8
  120. data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +119 -0
  121. data/lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb +3 -1
  122. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +72 -18
  123. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +3 -8
  124. data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +19 -0
  125. data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +18 -0
  126. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +137 -0
  127. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +259 -266
  128. data/lib/active_record/connection_adapters/statement_pool.rb +9 -8
  129. data/lib/active_record/connection_handling.rb +143 -40
  130. data/lib/active_record/core.rb +201 -163
  131. data/lib/active_record/counter_cache.rb +60 -28
  132. data/lib/active_record/database_configurations.rb +233 -0
  133. data/lib/active_record/database_configurations/database_config.rb +37 -0
  134. data/lib/active_record/database_configurations/hash_config.rb +50 -0
  135. data/lib/active_record/database_configurations/url_config.rb +78 -0
  136. data/lib/active_record/define_callbacks.rb +22 -0
  137. data/lib/active_record/dynamic_matchers.rb +87 -87
  138. data/lib/active_record/enum.rb +60 -23
  139. data/lib/active_record/errors.rb +114 -18
  140. data/lib/active_record/explain.rb +4 -4
  141. data/lib/active_record/explain_registry.rb +3 -1
  142. data/lib/active_record/explain_subscriber.rb +9 -4
  143. data/lib/active_record/fixture_set/file.rb +13 -8
  144. data/lib/active_record/fixture_set/model_metadata.rb +33 -0
  145. data/lib/active_record/fixture_set/render_context.rb +17 -0
  146. data/lib/active_record/fixture_set/table_row.rb +152 -0
  147. data/lib/active_record/fixture_set/table_rows.rb +46 -0
  148. data/lib/active_record/fixtures.rb +194 -504
  149. data/lib/active_record/gem_version.rb +5 -3
  150. data/lib/active_record/inheritance.rb +150 -99
  151. data/lib/active_record/insert_all.rb +179 -0
  152. data/lib/active_record/integration.rb +116 -25
  153. data/lib/active_record/internal_metadata.rb +16 -19
  154. data/lib/active_record/legacy_yaml_adapter.rb +4 -2
  155. data/lib/active_record/locking/optimistic.rb +77 -87
  156. data/lib/active_record/locking/pessimistic.rb +18 -6
  157. data/lib/active_record/log_subscriber.rb +48 -29
  158. data/lib/active_record/middleware/database_selector.rb +74 -0
  159. data/lib/active_record/middleware/database_selector/resolver.rb +87 -0
  160. data/lib/active_record/middleware/database_selector/resolver/session.rb +45 -0
  161. data/lib/active_record/migration.rb +369 -302
  162. data/lib/active_record/migration/command_recorder.rb +134 -100
  163. data/lib/active_record/migration/compatibility.rb +174 -56
  164. data/lib/active_record/migration/join_table.rb +8 -7
  165. data/lib/active_record/model_schema.rb +131 -127
  166. data/lib/active_record/nested_attributes.rb +213 -202
  167. data/lib/active_record/no_touching.rb +12 -3
  168. data/lib/active_record/null_relation.rb +12 -34
  169. data/lib/active_record/persistence.rb +446 -77
  170. data/lib/active_record/query_cache.rb +13 -12
  171. data/lib/active_record/querying.rb +37 -24
  172. data/lib/active_record/railtie.rb +128 -36
  173. data/lib/active_record/railties/collection_cache_association_loading.rb +34 -0
  174. data/lib/active_record/railties/console_sandbox.rb +2 -0
  175. data/lib/active_record/railties/controller_runtime.rb +34 -33
  176. data/lib/active_record/railties/databases.rake +312 -177
  177. data/lib/active_record/readonly_attributes.rb +5 -4
  178. data/lib/active_record/reflection.rb +214 -252
  179. data/lib/active_record/relation.rb +440 -318
  180. data/lib/active_record/relation/batches.rb +98 -52
  181. data/lib/active_record/relation/batches/batch_enumerator.rb +3 -1
  182. data/lib/active_record/relation/calculations.rb +212 -173
  183. data/lib/active_record/relation/delegation.rb +72 -69
  184. data/lib/active_record/relation/finder_methods.rb +207 -247
  185. data/lib/active_record/relation/from_clause.rb +6 -8
  186. data/lib/active_record/relation/merger.rb +78 -62
  187. data/lib/active_record/relation/predicate_builder.rb +83 -105
  188. data/lib/active_record/relation/predicate_builder/array_handler.rb +20 -14
  189. data/lib/active_record/relation/predicate_builder/association_query_value.rb +43 -0
  190. data/lib/active_record/relation/predicate_builder/base_handler.rb +4 -3
  191. data/lib/active_record/relation/predicate_builder/basic_object_handler.rb +6 -4
  192. data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +53 -0
  193. data/lib/active_record/relation/predicate_builder/range_handler.rb +7 -18
  194. data/lib/active_record/relation/predicate_builder/relation_handler.rb +6 -0
  195. data/lib/active_record/relation/query_attribute.rb +33 -2
  196. data/lib/active_record/relation/query_methods.rb +476 -334
  197. data/lib/active_record/relation/record_fetch_warning.rb +5 -3
  198. data/lib/active_record/relation/spawn_methods.rb +8 -8
  199. data/lib/active_record/relation/where_clause.rb +111 -96
  200. data/lib/active_record/relation/where_clause_factory.rb +6 -11
  201. data/lib/active_record/result.rb +69 -40
  202. data/lib/active_record/runtime_registry.rb +5 -3
  203. data/lib/active_record/sanitization.rb +83 -99
  204. data/lib/active_record/schema.rb +7 -14
  205. data/lib/active_record/schema_dumper.rb +71 -69
  206. data/lib/active_record/schema_migration.rb +16 -6
  207. data/lib/active_record/scoping.rb +20 -20
  208. data/lib/active_record/scoping/default.rb +92 -95
  209. data/lib/active_record/scoping/named.rb +47 -27
  210. data/lib/active_record/secure_token.rb +4 -2
  211. data/lib/active_record/serialization.rb +2 -0
  212. data/lib/active_record/statement_cache.rb +63 -28
  213. data/lib/active_record/store.rb +121 -41
  214. data/lib/active_record/suppressor.rb +6 -3
  215. data/lib/active_record/table_metadata.rb +39 -18
  216. data/lib/active_record/tasks/database_tasks.rb +271 -81
  217. data/lib/active_record/tasks/mysql_database_tasks.rb +54 -91
  218. data/lib/active_record/tasks/postgresql_database_tasks.rb +77 -47
  219. data/lib/active_record/tasks/sqlite_database_tasks.rb +33 -16
  220. data/lib/active_record/test_databases.rb +23 -0
  221. data/lib/active_record/test_fixtures.rb +225 -0
  222. data/lib/active_record/timestamp.rb +70 -36
  223. data/lib/active_record/touch_later.rb +8 -6
  224. data/lib/active_record/transactions.rb +141 -157
  225. data/lib/active_record/translation.rb +3 -1
  226. data/lib/active_record/type.rb +23 -18
  227. data/lib/active_record/type/adapter_specific_registry.rb +44 -48
  228. data/lib/active_record/type/date.rb +2 -0
  229. data/lib/active_record/type/date_time.rb +2 -0
  230. data/lib/active_record/type/decimal_without_scale.rb +15 -0
  231. data/lib/active_record/type/hash_lookup_type_map.rb +5 -4
  232. data/lib/active_record/type/internal/timezone.rb +2 -0
  233. data/lib/active_record/type/json.rb +30 -0
  234. data/lib/active_record/type/serialized.rb +16 -9
  235. data/lib/active_record/type/text.rb +11 -0
  236. data/lib/active_record/type/time.rb +2 -1
  237. data/lib/active_record/type/type_map.rb +14 -17
  238. data/lib/active_record/type/unsigned_integer.rb +16 -0
  239. data/lib/active_record/type_caster.rb +4 -2
  240. data/lib/active_record/type_caster/connection.rb +17 -12
  241. data/lib/active_record/type_caster/map.rb +5 -4
  242. data/lib/active_record/validations.rb +7 -5
  243. data/lib/active_record/validations/absence.rb +2 -0
  244. data/lib/active_record/validations/associated.rb +4 -3
  245. data/lib/active_record/validations/length.rb +2 -0
  246. data/lib/active_record/validations/presence.rb +4 -2
  247. data/lib/active_record/validations/uniqueness.rb +29 -42
  248. data/lib/active_record/version.rb +3 -1
  249. data/lib/arel.rb +62 -0
  250. data/lib/arel/alias_predication.rb +9 -0
  251. data/lib/arel/attributes.rb +22 -0
  252. data/lib/arel/attributes/attribute.rb +37 -0
  253. data/lib/arel/collectors/bind.rb +24 -0
  254. data/lib/arel/collectors/composite.rb +31 -0
  255. data/lib/arel/collectors/plain_string.rb +20 -0
  256. data/lib/arel/collectors/sql_string.rb +20 -0
  257. data/lib/arel/collectors/substitute_binds.rb +28 -0
  258. data/lib/arel/crud.rb +42 -0
  259. data/lib/arel/delete_manager.rb +18 -0
  260. data/lib/arel/errors.rb +9 -0
  261. data/lib/arel/expressions.rb +29 -0
  262. data/lib/arel/factory_methods.rb +49 -0
  263. data/lib/arel/insert_manager.rb +49 -0
  264. data/lib/arel/math.rb +45 -0
  265. data/lib/arel/nodes.rb +68 -0
  266. data/lib/arel/nodes/and.rb +32 -0
  267. data/lib/arel/nodes/ascending.rb +23 -0
  268. data/lib/arel/nodes/binary.rb +52 -0
  269. data/lib/arel/nodes/bind_param.rb +36 -0
  270. data/lib/arel/nodes/case.rb +55 -0
  271. data/lib/arel/nodes/casted.rb +50 -0
  272. data/lib/arel/nodes/comment.rb +29 -0
  273. data/lib/arel/nodes/count.rb +12 -0
  274. data/lib/arel/nodes/delete_statement.rb +45 -0
  275. data/lib/arel/nodes/descending.rb +23 -0
  276. data/lib/arel/nodes/equality.rb +18 -0
  277. data/lib/arel/nodes/extract.rb +24 -0
  278. data/lib/arel/nodes/false.rb +16 -0
  279. data/lib/arel/nodes/full_outer_join.rb +8 -0
  280. data/lib/arel/nodes/function.rb +44 -0
  281. data/lib/arel/nodes/grouping.rb +8 -0
  282. data/lib/arel/nodes/in.rb +8 -0
  283. data/lib/arel/nodes/infix_operation.rb +80 -0
  284. data/lib/arel/nodes/inner_join.rb +8 -0
  285. data/lib/arel/nodes/insert_statement.rb +37 -0
  286. data/lib/arel/nodes/join_source.rb +20 -0
  287. data/lib/arel/nodes/matches.rb +18 -0
  288. data/lib/arel/nodes/named_function.rb +23 -0
  289. data/lib/arel/nodes/node.rb +50 -0
  290. data/lib/arel/nodes/node_expression.rb +13 -0
  291. data/lib/arel/nodes/outer_join.rb +8 -0
  292. data/lib/arel/nodes/over.rb +15 -0
  293. data/lib/arel/nodes/regexp.rb +16 -0
  294. data/lib/arel/nodes/right_outer_join.rb +8 -0
  295. data/lib/arel/nodes/select_core.rb +67 -0
  296. data/lib/arel/nodes/select_statement.rb +41 -0
  297. data/lib/arel/nodes/sql_literal.rb +16 -0
  298. data/lib/arel/nodes/string_join.rb +11 -0
  299. data/lib/arel/nodes/table_alias.rb +27 -0
  300. data/lib/arel/nodes/terminal.rb +16 -0
  301. data/lib/arel/nodes/true.rb +16 -0
  302. data/lib/arel/nodes/unary.rb +45 -0
  303. data/lib/arel/nodes/unary_operation.rb +20 -0
  304. data/lib/arel/nodes/unqualified_column.rb +22 -0
  305. data/lib/arel/nodes/update_statement.rb +41 -0
  306. data/lib/arel/nodes/values_list.rb +9 -0
  307. data/lib/arel/nodes/window.rb +126 -0
  308. data/lib/arel/nodes/with.rb +11 -0
  309. data/lib/arel/order_predications.rb +13 -0
  310. data/lib/arel/predications.rb +256 -0
  311. data/lib/arel/select_manager.rb +271 -0
  312. data/lib/arel/table.rb +110 -0
  313. data/lib/arel/tree_manager.rb +72 -0
  314. data/lib/arel/update_manager.rb +34 -0
  315. data/lib/arel/visitors.rb +20 -0
  316. data/lib/arel/visitors/depth_first.rb +203 -0
  317. data/lib/arel/visitors/dot.rb +296 -0
  318. data/lib/arel/visitors/ibm_db.rb +34 -0
  319. data/lib/arel/visitors/informix.rb +62 -0
  320. data/lib/arel/visitors/mssql.rb +156 -0
  321. data/lib/arel/visitors/mysql.rb +83 -0
  322. data/lib/arel/visitors/oracle.rb +158 -0
  323. data/lib/arel/visitors/oracle12.rb +65 -0
  324. data/lib/arel/visitors/postgresql.rb +109 -0
  325. data/lib/arel/visitors/sqlite.rb +38 -0
  326. data/lib/arel/visitors/to_sql.rb +888 -0
  327. data/lib/arel/visitors/visitor.rb +45 -0
  328. data/lib/arel/visitors/where_sql.rb +22 -0
  329. data/lib/arel/window_predications.rb +9 -0
  330. data/lib/rails/generators/active_record.rb +7 -5
  331. data/lib/rails/generators/active_record/application_record/application_record_generator.rb +26 -0
  332. data/lib/rails/generators/active_record/{model/templates/application_record.rb → application_record/templates/application_record.rb.tt} +0 -0
  333. data/lib/rails/generators/active_record/migration.rb +17 -3
  334. data/lib/rails/generators/active_record/migration/migration_generator.rb +37 -35
  335. data/lib/rails/generators/active_record/migration/templates/{create_table_migration.rb → create_table_migration.rb.tt} +1 -1
  336. data/lib/rails/generators/active_record/migration/templates/{migration.rb → migration.rb.tt} +4 -2
  337. data/lib/rails/generators/active_record/model/model_generator.rb +9 -30
  338. data/lib/rails/generators/active_record/model/templates/{model.rb → model.rb.tt} +10 -1
  339. data/lib/rails/generators/active_record/model/templates/{module.rb → module.rb.tt} +0 -0
  340. metadata +137 -52
  341. data/lib/active_record/associations/preloader/belongs_to.rb +0 -17
  342. data/lib/active_record/associations/preloader/collection_association.rb +0 -17
  343. data/lib/active_record/associations/preloader/has_many.rb +0 -17
  344. data/lib/active_record/associations/preloader/has_many_through.rb +0 -19
  345. data/lib/active_record/associations/preloader/has_one.rb +0 -15
  346. data/lib/active_record/associations/preloader/has_one_through.rb +0 -9
  347. data/lib/active_record/associations/preloader/singular_association.rb +0 -20
  348. data/lib/active_record/attribute.rb +0 -213
  349. data/lib/active_record/attribute/user_provided_default.rb +0 -28
  350. data/lib/active_record/attribute_mutation_tracker.rb +0 -70
  351. data/lib/active_record/attribute_set.rb +0 -110
  352. data/lib/active_record/attribute_set/builder.rb +0 -132
  353. data/lib/active_record/collection_cache_key.rb +0 -50
  354. data/lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb +0 -50
  355. data/lib/active_record/railties/jdbcmysql_error.rb +0 -16
  356. data/lib/active_record/relation/predicate_builder/association_query_handler.rb +0 -88
  357. data/lib/active_record/relation/predicate_builder/class_handler.rb +0 -27
  358. data/lib/active_record/relation/predicate_builder/polymorphic_array_handler.rb +0 -57
  359. data/lib/active_record/type/internal/abstract_json.rb +0 -33
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arel # :nodoc: all
4
+ module Visitors
5
+ class Visitor
6
+ def initialize
7
+ @dispatch = get_dispatch_cache
8
+ end
9
+
10
+ def accept(object, collector = nil)
11
+ visit object, collector
12
+ end
13
+
14
+ private
15
+ attr_reader :dispatch
16
+
17
+ def self.dispatch_cache
18
+ @dispatch_cache ||= Hash.new do |hash, klass|
19
+ hash[klass] = "visit_#{(klass.name || '').gsub('::', '_')}"
20
+ end
21
+ end
22
+
23
+ def get_dispatch_cache
24
+ self.class.dispatch_cache
25
+ end
26
+
27
+ def visit(object, collector = nil)
28
+ dispatch_method = dispatch[object.class]
29
+ if collector
30
+ send dispatch_method, object, collector
31
+ else
32
+ send dispatch_method, object
33
+ end
34
+ rescue NoMethodError => e
35
+ raise e if respond_to?(dispatch_method, true)
36
+ superklass = object.class.ancestors.find { |klass|
37
+ respond_to?(dispatch[klass], true)
38
+ }
39
+ raise(TypeError, "Cannot visit #{object.class}") unless superklass
40
+ dispatch[object.class] = dispatch[superklass]
41
+ retry
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arel # :nodoc: all
4
+ module Visitors
5
+ class WhereSql < Arel::Visitors::ToSql
6
+ def initialize(inner_visitor, *args, &block)
7
+ @inner_visitor = inner_visitor
8
+ super(*args, &block)
9
+ end
10
+
11
+ private
12
+ def visit_Arel_Nodes_SelectCore(o, collector)
13
+ collector << "WHERE "
14
+ wheres = o.wheres.map do |where|
15
+ Nodes::SqlLiteral.new(@inner_visitor.accept(where, collector.class.new).value)
16
+ end
17
+
18
+ inject_join wheres, collector, " AND "
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arel # :nodoc: all
4
+ module WindowPredications
5
+ def over(expr = nil)
6
+ Nodes::Over.new(self, expr)
7
+ end
8
+ end
9
+ end
@@ -1,7 +1,9 @@
1
- require 'rails/generators/named_base'
2
- require 'rails/generators/active_model'
3
- require 'rails/generators/active_record/migration'
4
- require 'active_record'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/named_base"
4
+ require "rails/generators/active_model"
5
+ require "rails/generators/active_record/migration"
6
+ require "active_record"
5
7
 
6
8
  module ActiveRecord
7
9
  module Generators # :nodoc:
@@ -10,7 +12,7 @@ module ActiveRecord
10
12
 
11
13
  # Set the current directory as base for the inherited generators.
12
14
  def self.base_root
13
- File.dirname(__FILE__)
15
+ __dir__
14
16
  end
15
17
  end
16
18
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
4
+
5
+ module ActiveRecord
6
+ module Generators # :nodoc:
7
+ class ApplicationRecordGenerator < ::Rails::Generators::Base # :nodoc:
8
+ source_root File.expand_path("templates", __dir__)
9
+
10
+ # FIXME: Change this file to a symlink once RubyGems 2.5.0 is required.
11
+ def create_application_record
12
+ template "application_record.rb", application_record_file_name
13
+ end
14
+
15
+ private
16
+ def application_record_file_name
17
+ @application_record_file_name ||=
18
+ if namespaced?
19
+ "app/models/#{namespaced_path}/application_record.rb"
20
+ else
21
+ "app/models/application_record.rb"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,4 +1,6 @@
1
- require 'rails/generators/migration'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/migration"
2
4
 
3
5
  module ActiveRecord
4
6
  module Generators # :nodoc:
@@ -15,7 +17,6 @@ module ActiveRecord
15
17
  end
16
18
 
17
19
  private
18
-
19
20
  def primary_key_type
20
21
  key_type = options[:primary_key_type]
21
22
  ", id: :#{key_type}" if key_type
@@ -23,11 +24,24 @@ module ActiveRecord
23
24
 
24
25
  def db_migrate_path
25
26
  if defined?(Rails.application) && Rails.application
26
- Rails.application.config.paths["db/migrate"].to_ary.first
27
+ configured_migrate_path || default_migrate_path
27
28
  else
28
29
  "db/migrate"
29
30
  end
30
31
  end
32
+
33
+ def default_migrate_path
34
+ Rails.application.config.paths["db/migrate"].to_ary.first
35
+ end
36
+
37
+ def configured_migrate_path
38
+ return unless database = options[:database]
39
+ config = ActiveRecord::Base.configurations.configs_for(
40
+ env_name: Rails.env,
41
+ spec_name: database,
42
+ )
43
+ config&.migrations_paths
44
+ end
31
45
  end
32
46
  end
33
47
  end
@@ -1,11 +1,14 @@
1
- require 'rails/generators/active_record'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
2
4
 
3
5
  module ActiveRecord
4
6
  module Generators # :nodoc:
5
7
  class MigrationGenerator < Base # :nodoc:
6
- argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
8
+ argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
7
9
 
8
10
  class_option :primary_key_type, type: :string, desc: "The type for primary key"
11
+ class_option :database, type: :string, aliases: %i(--db), desc: "The database for your migration. By default, the current environment's primary database is used."
9
12
 
10
13
  def create_migration_file
11
14
  set_local_assigns!
@@ -13,46 +16,45 @@ module ActiveRecord
13
16
  migration_template @migration_template, File.join(db_migrate_path, "#{file_name}.rb")
14
17
  end
15
18
 
16
- protected
17
- attr_reader :migration_action, :join_tables
19
+ private
20
+ attr_reader :migration_action, :join_tables
18
21
 
19
- # Sets the default migration template that is being used for the generation of the migration.
20
- # Depending on command line arguments, the migration template and the table name instance
21
- # variables are set up.
22
- def set_local_assigns!
23
- @migration_template = "migration.rb"
24
- case file_name
25
- when /^(add|remove)_.*_(?:to|from)_(.*)/
26
- @migration_action = $1
27
- @table_name = normalize_table_name($2)
28
- when /join_table/
29
- if attributes.length == 2
30
- @migration_action = 'join'
31
- @join_tables = pluralize_table_names? ? attributes.map(&:plural_name) : attributes.map(&:singular_name)
22
+ # Sets the default migration template that is being used for the generation of the migration.
23
+ # Depending on command line arguments, the migration template and the table name instance
24
+ # variables are set up.
25
+ def set_local_assigns!
26
+ @migration_template = "migration.rb"
27
+ case file_name
28
+ when /^(add)_.*_to_(.*)/, /^(remove)_.*?_from_(.*)/
29
+ @migration_action = $1
30
+ @table_name = normalize_table_name($2)
31
+ when /join_table/
32
+ if attributes.length == 2
33
+ @migration_action = "join"
34
+ @join_tables = pluralize_table_names? ? attributes.map(&:plural_name) : attributes.map(&:singular_name)
32
35
 
33
- set_index_names
36
+ set_index_names
37
+ end
38
+ when /^create_(.+)/
39
+ @table_name = normalize_table_name($1)
40
+ @migration_template = "create_table_migration.rb"
34
41
  end
35
- when /^create_(.+)/
36
- @table_name = normalize_table_name($1)
37
- @migration_template = "create_table_migration.rb"
38
42
  end
39
- end
40
43
 
41
- def set_index_names
42
- attributes.each_with_index do |attr, i|
43
- attr.index_name = [attr, attributes[i - 1]].map{ |a| index_name_for(a) }
44
+ def set_index_names
45
+ attributes.each_with_index do |attr, i|
46
+ attr.index_name = [attr, attributes[i - 1]].map { |a| index_name_for(a) }
47
+ end
44
48
  end
45
- end
46
49
 
47
- def index_name_for(attribute)
48
- if attribute.foreign_key?
49
- attribute.name
50
- else
51
- attribute.name.singularize.foreign_key
52
- end.to_sym
53
- end
50
+ def index_name_for(attribute)
51
+ if attribute.foreign_key?
52
+ attribute.name
53
+ else
54
+ attribute.name.singularize.foreign_key
55
+ end.to_sym
56
+ end
54
57
 
55
- private
56
58
  def attributes_with_index
57
59
  attributes.select { |a| !a.reference? && a.has_index? }
58
60
  end
@@ -60,7 +62,7 @@ module ActiveRecord
60
62
  # A migration file name can only contain underscores (_), lowercase characters,
61
63
  # and numbers 0-9. Any other file name will raise an IllegalMigrationNameError.
62
64
  def validate_file_name!
63
- unless file_name =~ /^[_a-z0-9]+$/
65
+ unless /^[_a-z0-9]+$/.match?(file_name)
64
66
  raise IllegalMigrationNameError.new(file_name)
65
67
  end
66
68
  end
@@ -6,7 +6,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
6
6
  t.string :password_digest<%= attribute.inject_options %>
7
7
  <% elsif attribute.token? -%>
8
8
  t.string :<%= attribute.name %><%= attribute.inject_options %>
9
- <% else -%>
9
+ <% elsif !attribute.virtual? -%>
10
10
  t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %>
11
11
  <% end -%>
12
12
  <% end -%>
@@ -7,7 +7,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
7
7
  <%- elsif attribute.token? -%>
8
8
  add_column :<%= table_name %>, :<%= attribute.name %>, :string<%= attribute.inject_options %>
9
9
  add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>, unique: true
10
- <%- else -%>
10
+ <%- elsif !attribute.virtual? -%>
11
11
  add_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
12
12
  <%- if attribute.has_index? -%>
13
13
  add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
@@ -21,7 +21,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
21
21
  <%- attributes.each do |attribute| -%>
22
22
  <%- if attribute.reference? -%>
23
23
  t.references :<%= attribute.name %><%= attribute.inject_options %>
24
- <%- else -%>
24
+ <%- elsif !attribute.virtual? -%>
25
25
  <%= '# ' unless attribute.has_index? -%>t.index <%= attribute.index_name %><%= attribute.inject_index_options %>
26
26
  <%- end -%>
27
27
  <%- end -%>
@@ -37,7 +37,9 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
37
37
  <%- if attribute.has_index? -%>
38
38
  remove_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
39
39
  <%- end -%>
40
+ <%- if !attribute.virtual? -%>
40
41
  remove_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
42
+ <%- end -%>
41
43
  <%- end -%>
42
44
  <%- end -%>
43
45
  <%- end -%>
@@ -1,9 +1,11 @@
1
- require 'rails/generators/active_record'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
2
4
 
3
5
  module ActiveRecord
4
6
  module Generators # :nodoc:
5
7
  class ModelGenerator < Base # :nodoc:
6
- argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
8
+ argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
7
9
 
8
10
  check_class_collision
9
11
 
@@ -12,6 +14,7 @@ module ActiveRecord
12
14
  class_option :parent, type: :string, desc: "The parent class for the generated model"
13
15
  class_option :indexes, type: :boolean, default: true, desc: "Add indexes for references and belongs_to columns"
14
16
  class_option :primary_key_type, type: :string, desc: "The type for primary key"
17
+ class_option :database, type: :string, aliases: %i(--db), desc: "The database for your model's migration. By default, the current environment's primary database is used."
15
18
 
16
19
  # creates the migration file for the model.
17
20
  def create_migration_file
@@ -21,48 +24,24 @@ module ActiveRecord
21
24
  end
22
25
 
23
26
  def create_model_file
24
- generate_application_record
25
- template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
27
+ template "model.rb", File.join("app/models", class_path, "#{file_name}.rb")
26
28
  end
27
29
 
28
30
  def create_module_file
29
31
  return if regular_class_path.empty?
30
- generate_application_record
31
- template 'module.rb', File.join('app/models', "#{class_path.join('/')}.rb") if behavior == :invoke
32
+ template "module.rb", File.join("app/models", "#{class_path.join('/')}.rb") if behavior == :invoke
32
33
  end
33
34
 
34
35
  hook_for :test_framework
35
36
 
36
- protected
37
-
37
+ private
38
38
  def attributes_with_index
39
39
  attributes.select { |a| !a.reference? && a.has_index? }
40
40
  end
41
41
 
42
- # FIXME: Change this file to a symlink once RubyGems 2.5.0 is required.
43
- def generate_application_record
44
- if self.behavior == :invoke && !application_record_exist?
45
- template 'application_record.rb', application_record_file_name
46
- end
47
- end
48
-
49
42
  # Used by the migration template to determine the parent name of the model
50
43
  def parent_class_name
51
- options[:parent] || 'ApplicationRecord'
52
- end
53
-
54
- def application_record_exist?
55
- file_exist = nil
56
- in_root { file_exist = File.exist?(application_record_file_name) }
57
- file_exist
58
- end
59
-
60
- def application_record_file_name
61
- @application_record_file_name ||= if mountable_engine?
62
- "app/models/#{namespaced_path}/application_record.rb"
63
- else
64
- 'app/models/application_record.rb'
65
- end
44
+ options[:parent] || "ApplicationRecord"
66
45
  end
67
46
  end
68
47
  end
@@ -1,7 +1,16 @@
1
1
  <% module_namespacing do -%>
2
2
  class <%= class_name %> < <%= parent_class_name.classify %>
3
3
  <% attributes.select(&:reference?).each do |attribute| -%>
4
- belongs_to :<%= attribute.name %><%= ', polymorphic: true' if attribute.polymorphic? %><%= ', required: true' if attribute.required? %>
4
+ belongs_to :<%= attribute.name %><%= ', polymorphic: true' if attribute.polymorphic? %>
5
+ <% end -%>
6
+ <% attributes.select(&:rich_text?).each do |attribute| -%>
7
+ has_rich_text :<%= attribute.name %>
8
+ <% end -%>
9
+ <% attributes.select(&:attachment?).each do |attribute| -%>
10
+ has_one_attached :<%= attribute.name %>
11
+ <% end -%>
12
+ <% attributes.select(&:attachments?).each do |attribute| -%>
13
+ has_many_attached :<%= attribute.name %>
5
14
  <% end -%>
6
15
  <% attributes.select(&:token?).each do |attribute| -%>
7
16
  has_secure_token<% if attribute.name != "token" %> :<%= attribute.name %><% end %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.7.2
4
+ version: 6.0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-13 00:00:00.000000000 Z
11
+ date: 2020-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,42 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.7.2
19
+ version: 6.0.3.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 5.0.7.2
26
+ version: 6.0.3.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 5.0.7.2
33
+ version: 6.0.3.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 5.0.7.2
41
- - !ruby/object:Gem::Dependency
42
- name: arel
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '7.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '7.0'
40
+ version: 6.0.3.4
55
41
  description: Databases on Rails. Build a persistent domain model by mapping database
56
42
  tables to Ruby classes. Strong conventions for associations, validations, aggregations,
57
43
  migrations, and testing come baked-in.
@@ -67,6 +53,7 @@ files:
67
53
  - examples/performance.rb
68
54
  - examples/simple.rb
69
55
  - lib/active_record.rb
56
+ - lib/active_record/advisory_lock_base.rb
70
57
  - lib/active_record/aggregations.rb
71
58
  - lib/active_record/association_relation.rb
72
59
  - lib/active_record/associations.rb
@@ -95,18 +82,9 @@ files:
95
82
  - lib/active_record/associations/join_dependency/join_part.rb
96
83
  - lib/active_record/associations/preloader.rb
97
84
  - lib/active_record/associations/preloader/association.rb
98
- - lib/active_record/associations/preloader/belongs_to.rb
99
- - lib/active_record/associations/preloader/collection_association.rb
100
- - lib/active_record/associations/preloader/has_many.rb
101
- - lib/active_record/associations/preloader/has_many_through.rb
102
- - lib/active_record/associations/preloader/has_one.rb
103
- - lib/active_record/associations/preloader/has_one_through.rb
104
- - lib/active_record/associations/preloader/singular_association.rb
105
85
  - lib/active_record/associations/preloader/through_association.rb
106
86
  - lib/active_record/associations/singular_association.rb
107
87
  - lib/active_record/associations/through_association.rb
108
- - lib/active_record/attribute.rb
109
- - lib/active_record/attribute/user_provided_default.rb
110
88
  - lib/active_record/attribute_assignment.rb
111
89
  - lib/active_record/attribute_decorators.rb
112
90
  - lib/active_record/attribute_methods.rb
@@ -118,16 +96,12 @@ files:
118
96
  - lib/active_record/attribute_methods/serialization.rb
119
97
  - lib/active_record/attribute_methods/time_zone_conversion.rb
120
98
  - lib/active_record/attribute_methods/write.rb
121
- - lib/active_record/attribute_mutation_tracker.rb
122
- - lib/active_record/attribute_set.rb
123
- - lib/active_record/attribute_set/builder.rb
124
99
  - lib/active_record/attributes.rb
125
100
  - lib/active_record/autosave_association.rb
126
101
  - lib/active_record/base.rb
127
102
  - lib/active_record/callbacks.rb
128
103
  - lib/active_record/coders/json.rb
129
104
  - lib/active_record/coders/yaml_column.rb
130
- - lib/active_record/collection_cache_key.rb
131
105
  - lib/active_record/connection_adapters/abstract/connection_pool.rb
132
106
  - lib/active_record/connection_adapters/abstract/database_limits.rb
133
107
  - lib/active_record/connection_adapters/abstract/database_statements.rb
@@ -151,6 +125,7 @@ files:
151
125
  - lib/active_record/connection_adapters/mysql/schema_creation.rb
152
126
  - lib/active_record/connection_adapters/mysql/schema_definitions.rb
153
127
  - lib/active_record/connection_adapters/mysql/schema_dumper.rb
128
+ - lib/active_record/connection_adapters/mysql/schema_statements.rb
154
129
  - lib/active_record/connection_adapters/mysql/type_metadata.rb
155
130
  - lib/active_record/connection_adapters/mysql2_adapter.rb
156
131
  - lib/active_record/connection_adapters/postgresql/column.rb
@@ -162,16 +137,17 @@ files:
162
137
  - lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb
163
138
  - lib/active_record/connection_adapters/postgresql/oid/bytea.rb
164
139
  - lib/active_record/connection_adapters/postgresql/oid/cidr.rb
140
+ - lib/active_record/connection_adapters/postgresql/oid/date.rb
165
141
  - lib/active_record/connection_adapters/postgresql/oid/date_time.rb
166
142
  - lib/active_record/connection_adapters/postgresql/oid/decimal.rb
167
143
  - lib/active_record/connection_adapters/postgresql/oid/enum.rb
168
144
  - lib/active_record/connection_adapters/postgresql/oid/hstore.rb
169
145
  - lib/active_record/connection_adapters/postgresql/oid/inet.rb
170
- - lib/active_record/connection_adapters/postgresql/oid/json.rb
171
146
  - lib/active_record/connection_adapters/postgresql/oid/jsonb.rb
147
+ - lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb
172
148
  - lib/active_record/connection_adapters/postgresql/oid/money.rb
149
+ - lib/active_record/connection_adapters/postgresql/oid/oid.rb
173
150
  - lib/active_record/connection_adapters/postgresql/oid/point.rb
174
- - lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb
175
151
  - lib/active_record/connection_adapters/postgresql/oid/range.rb
176
152
  - lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb
177
153
  - lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb
@@ -180,6 +156,7 @@ files:
180
156
  - lib/active_record/connection_adapters/postgresql/oid/xml.rb
181
157
  - lib/active_record/connection_adapters/postgresql/quoting.rb
182
158
  - lib/active_record/connection_adapters/postgresql/referential_integrity.rb
159
+ - lib/active_record/connection_adapters/postgresql/schema_creation.rb
183
160
  - lib/active_record/connection_adapters/postgresql/schema_definitions.rb
184
161
  - lib/active_record/connection_adapters/postgresql/schema_dumper.rb
185
162
  - lib/active_record/connection_adapters/postgresql/schema_statements.rb
@@ -188,14 +165,23 @@ files:
188
165
  - lib/active_record/connection_adapters/postgresql_adapter.rb
189
166
  - lib/active_record/connection_adapters/schema_cache.rb
190
167
  - lib/active_record/connection_adapters/sql_type_metadata.rb
168
+ - lib/active_record/connection_adapters/sqlite3/database_statements.rb
191
169
  - lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb
192
170
  - lib/active_record/connection_adapters/sqlite3/quoting.rb
193
171
  - lib/active_record/connection_adapters/sqlite3/schema_creation.rb
172
+ - lib/active_record/connection_adapters/sqlite3/schema_definitions.rb
173
+ - lib/active_record/connection_adapters/sqlite3/schema_dumper.rb
174
+ - lib/active_record/connection_adapters/sqlite3/schema_statements.rb
194
175
  - lib/active_record/connection_adapters/sqlite3_adapter.rb
195
176
  - lib/active_record/connection_adapters/statement_pool.rb
196
177
  - lib/active_record/connection_handling.rb
197
178
  - lib/active_record/core.rb
198
179
  - lib/active_record/counter_cache.rb
180
+ - lib/active_record/database_configurations.rb
181
+ - lib/active_record/database_configurations/database_config.rb
182
+ - lib/active_record/database_configurations/hash_config.rb
183
+ - lib/active_record/database_configurations/url_config.rb
184
+ - lib/active_record/define_callbacks.rb
199
185
  - lib/active_record/dynamic_matchers.rb
200
186
  - lib/active_record/enum.rb
201
187
  - lib/active_record/errors.rb
@@ -203,9 +189,14 @@ files:
203
189
  - lib/active_record/explain_registry.rb
204
190
  - lib/active_record/explain_subscriber.rb
205
191
  - lib/active_record/fixture_set/file.rb
192
+ - lib/active_record/fixture_set/model_metadata.rb
193
+ - lib/active_record/fixture_set/render_context.rb
194
+ - lib/active_record/fixture_set/table_row.rb
195
+ - lib/active_record/fixture_set/table_rows.rb
206
196
  - lib/active_record/fixtures.rb
207
197
  - lib/active_record/gem_version.rb
208
198
  - lib/active_record/inheritance.rb
199
+ - lib/active_record/insert_all.rb
209
200
  - lib/active_record/integration.rb
210
201
  - lib/active_record/internal_metadata.rb
211
202
  - lib/active_record/legacy_yaml_adapter.rb
@@ -213,6 +204,9 @@ files:
213
204
  - lib/active_record/locking/optimistic.rb
214
205
  - lib/active_record/locking/pessimistic.rb
215
206
  - lib/active_record/log_subscriber.rb
207
+ - lib/active_record/middleware/database_selector.rb
208
+ - lib/active_record/middleware/database_selector/resolver.rb
209
+ - lib/active_record/middleware/database_selector/resolver/session.rb
216
210
  - lib/active_record/migration.rb
217
211
  - lib/active_record/migration/command_recorder.rb
218
212
  - lib/active_record/migration/compatibility.rb
@@ -225,10 +219,10 @@ files:
225
219
  - lib/active_record/query_cache.rb
226
220
  - lib/active_record/querying.rb
227
221
  - lib/active_record/railtie.rb
222
+ - lib/active_record/railties/collection_cache_association_loading.rb
228
223
  - lib/active_record/railties/console_sandbox.rb
229
224
  - lib/active_record/railties/controller_runtime.rb
230
225
  - lib/active_record/railties/databases.rake
231
- - lib/active_record/railties/jdbcmysql_error.rb
232
226
  - lib/active_record/readonly_attributes.rb
233
227
  - lib/active_record/reflection.rb
234
228
  - lib/active_record/relation.rb
@@ -241,11 +235,10 @@ files:
241
235
  - lib/active_record/relation/merger.rb
242
236
  - lib/active_record/relation/predicate_builder.rb
243
237
  - lib/active_record/relation/predicate_builder/array_handler.rb
244
- - lib/active_record/relation/predicate_builder/association_query_handler.rb
238
+ - lib/active_record/relation/predicate_builder/association_query_value.rb
245
239
  - lib/active_record/relation/predicate_builder/base_handler.rb
246
240
  - lib/active_record/relation/predicate_builder/basic_object_handler.rb
247
- - lib/active_record/relation/predicate_builder/class_handler.rb
248
- - lib/active_record/relation/predicate_builder/polymorphic_array_handler.rb
241
+ - lib/active_record/relation/predicate_builder/polymorphic_array_value.rb
249
242
  - lib/active_record/relation/predicate_builder/range_handler.rb
250
243
  - lib/active_record/relation/predicate_builder/relation_handler.rb
251
244
  - lib/active_record/relation/query_attribute.rb
@@ -273,6 +266,8 @@ files:
273
266
  - lib/active_record/tasks/mysql_database_tasks.rb
274
267
  - lib/active_record/tasks/postgresql_database_tasks.rb
275
268
  - lib/active_record/tasks/sqlite_database_tasks.rb
269
+ - lib/active_record/test_databases.rb
270
+ - lib/active_record/test_fixtures.rb
276
271
  - lib/active_record/timestamp.rb
277
272
  - lib/active_record/touch_later.rb
278
273
  - lib/active_record/transactions.rb
@@ -281,12 +276,15 @@ files:
281
276
  - lib/active_record/type/adapter_specific_registry.rb
282
277
  - lib/active_record/type/date.rb
283
278
  - lib/active_record/type/date_time.rb
279
+ - lib/active_record/type/decimal_without_scale.rb
284
280
  - lib/active_record/type/hash_lookup_type_map.rb
285
- - lib/active_record/type/internal/abstract_json.rb
286
281
  - lib/active_record/type/internal/timezone.rb
282
+ - lib/active_record/type/json.rb
287
283
  - lib/active_record/type/serialized.rb
284
+ - lib/active_record/type/text.rb
288
285
  - lib/active_record/type/time.rb
289
286
  - lib/active_record/type/type_map.rb
287
+ - lib/active_record/type/unsigned_integer.rb
290
288
  - lib/active_record/type_caster.rb
291
289
  - lib/active_record/type_caster/connection.rb
292
290
  - lib/active_record/type_caster/map.rb
@@ -297,20 +295,107 @@ files:
297
295
  - lib/active_record/validations/presence.rb
298
296
  - lib/active_record/validations/uniqueness.rb
299
297
  - lib/active_record/version.rb
298
+ - lib/arel.rb
299
+ - lib/arel/alias_predication.rb
300
+ - lib/arel/attributes.rb
301
+ - lib/arel/attributes/attribute.rb
302
+ - lib/arel/collectors/bind.rb
303
+ - lib/arel/collectors/composite.rb
304
+ - lib/arel/collectors/plain_string.rb
305
+ - lib/arel/collectors/sql_string.rb
306
+ - lib/arel/collectors/substitute_binds.rb
307
+ - lib/arel/crud.rb
308
+ - lib/arel/delete_manager.rb
309
+ - lib/arel/errors.rb
310
+ - lib/arel/expressions.rb
311
+ - lib/arel/factory_methods.rb
312
+ - lib/arel/insert_manager.rb
313
+ - lib/arel/math.rb
314
+ - lib/arel/nodes.rb
315
+ - lib/arel/nodes/and.rb
316
+ - lib/arel/nodes/ascending.rb
317
+ - lib/arel/nodes/binary.rb
318
+ - lib/arel/nodes/bind_param.rb
319
+ - lib/arel/nodes/case.rb
320
+ - lib/arel/nodes/casted.rb
321
+ - lib/arel/nodes/comment.rb
322
+ - lib/arel/nodes/count.rb
323
+ - lib/arel/nodes/delete_statement.rb
324
+ - lib/arel/nodes/descending.rb
325
+ - lib/arel/nodes/equality.rb
326
+ - lib/arel/nodes/extract.rb
327
+ - lib/arel/nodes/false.rb
328
+ - lib/arel/nodes/full_outer_join.rb
329
+ - lib/arel/nodes/function.rb
330
+ - lib/arel/nodes/grouping.rb
331
+ - lib/arel/nodes/in.rb
332
+ - lib/arel/nodes/infix_operation.rb
333
+ - lib/arel/nodes/inner_join.rb
334
+ - lib/arel/nodes/insert_statement.rb
335
+ - lib/arel/nodes/join_source.rb
336
+ - lib/arel/nodes/matches.rb
337
+ - lib/arel/nodes/named_function.rb
338
+ - lib/arel/nodes/node.rb
339
+ - lib/arel/nodes/node_expression.rb
340
+ - lib/arel/nodes/outer_join.rb
341
+ - lib/arel/nodes/over.rb
342
+ - lib/arel/nodes/regexp.rb
343
+ - lib/arel/nodes/right_outer_join.rb
344
+ - lib/arel/nodes/select_core.rb
345
+ - lib/arel/nodes/select_statement.rb
346
+ - lib/arel/nodes/sql_literal.rb
347
+ - lib/arel/nodes/string_join.rb
348
+ - lib/arel/nodes/table_alias.rb
349
+ - lib/arel/nodes/terminal.rb
350
+ - lib/arel/nodes/true.rb
351
+ - lib/arel/nodes/unary.rb
352
+ - lib/arel/nodes/unary_operation.rb
353
+ - lib/arel/nodes/unqualified_column.rb
354
+ - lib/arel/nodes/update_statement.rb
355
+ - lib/arel/nodes/values_list.rb
356
+ - lib/arel/nodes/window.rb
357
+ - lib/arel/nodes/with.rb
358
+ - lib/arel/order_predications.rb
359
+ - lib/arel/predications.rb
360
+ - lib/arel/select_manager.rb
361
+ - lib/arel/table.rb
362
+ - lib/arel/tree_manager.rb
363
+ - lib/arel/update_manager.rb
364
+ - lib/arel/visitors.rb
365
+ - lib/arel/visitors/depth_first.rb
366
+ - lib/arel/visitors/dot.rb
367
+ - lib/arel/visitors/ibm_db.rb
368
+ - lib/arel/visitors/informix.rb
369
+ - lib/arel/visitors/mssql.rb
370
+ - lib/arel/visitors/mysql.rb
371
+ - lib/arel/visitors/oracle.rb
372
+ - lib/arel/visitors/oracle12.rb
373
+ - lib/arel/visitors/postgresql.rb
374
+ - lib/arel/visitors/sqlite.rb
375
+ - lib/arel/visitors/to_sql.rb
376
+ - lib/arel/visitors/visitor.rb
377
+ - lib/arel/visitors/where_sql.rb
378
+ - lib/arel/window_predications.rb
300
379
  - lib/rails/generators/active_record.rb
380
+ - lib/rails/generators/active_record/application_record/application_record_generator.rb
381
+ - lib/rails/generators/active_record/application_record/templates/application_record.rb.tt
301
382
  - lib/rails/generators/active_record/migration.rb
302
383
  - lib/rails/generators/active_record/migration/migration_generator.rb
303
- - lib/rails/generators/active_record/migration/templates/create_table_migration.rb
304
- - lib/rails/generators/active_record/migration/templates/migration.rb
384
+ - lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt
385
+ - lib/rails/generators/active_record/migration/templates/migration.rb.tt
305
386
  - lib/rails/generators/active_record/model/model_generator.rb
306
- - lib/rails/generators/active_record/model/templates/application_record.rb
307
- - lib/rails/generators/active_record/model/templates/model.rb
308
- - lib/rails/generators/active_record/model/templates/module.rb
309
- homepage: http://rubyonrails.org
387
+ - lib/rails/generators/active_record/model/templates/model.rb.tt
388
+ - lib/rails/generators/active_record/model/templates/module.rb.tt
389
+ homepage: https://rubyonrails.org
310
390
  licenses:
311
391
  - MIT
312
- metadata: {}
313
- post_install_message:
392
+ metadata:
393
+ bug_tracker_uri: https://github.com/rails/rails/issues
394
+ changelog_uri: https://github.com/rails/rails/blob/v6.0.3.4/activerecord/CHANGELOG.md
395
+ documentation_uri: https://api.rubyonrails.org/v6.0.3.4/
396
+ mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
397
+ source_code_uri: https://github.com/rails/rails/tree/v6.0.3.4/activerecord
398
+ post_install_message:
314
399
  rdoc_options:
315
400
  - "--main"
316
401
  - README.rdoc
@@ -320,15 +405,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
320
405
  requirements:
321
406
  - - ">="
322
407
  - !ruby/object:Gem::Version
323
- version: 2.2.2
408
+ version: 2.5.0
324
409
  required_rubygems_version: !ruby/object:Gem::Requirement
325
410
  requirements:
326
411
  - - ">="
327
412
  - !ruby/object:Gem::Version
328
413
  version: '0'
329
414
  requirements: []
330
- rubygems_version: 3.0.1
331
- signing_key:
415
+ rubygems_version: 3.1.4
416
+ signing_key:
332
417
  specification_version: 4
333
418
  summary: Object-relational mapper framework (part of Rails).
334
419
  test_files: []