activerecord 5.0.7 → 5.1.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (219) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +657 -2080
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/examples/performance.rb +28 -28
  6. data/examples/simple.rb +3 -3
  7. data/lib/active_record/aggregations.rb +244 -244
  8. data/lib/active_record/association_relation.rb +5 -5
  9. data/lib/active_record/associations/alias_tracker.rb +10 -11
  10. data/lib/active_record/associations/association.rb +23 -5
  11. data/lib/active_record/associations/association_scope.rb +95 -81
  12. data/lib/active_record/associations/belongs_to_association.rb +7 -4
  13. data/lib/active_record/associations/builder/belongs_to.rb +30 -16
  14. data/lib/active_record/associations/builder/collection_association.rb +1 -2
  15. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +27 -27
  16. data/lib/active_record/associations/collection_association.rb +36 -205
  17. data/lib/active_record/associations/collection_proxy.rb +132 -63
  18. data/lib/active_record/associations/has_many_association.rb +10 -19
  19. data/lib/active_record/associations/has_many_through_association.rb +12 -4
  20. data/lib/active_record/associations/has_one_association.rb +24 -28
  21. data/lib/active_record/associations/has_one_through_association.rb +5 -1
  22. data/lib/active_record/associations/join_dependency/join_association.rb +4 -28
  23. data/lib/active_record/associations/join_dependency/join_base.rb +1 -1
  24. data/lib/active_record/associations/join_dependency/join_part.rb +1 -1
  25. data/lib/active_record/associations/join_dependency.rb +121 -118
  26. data/lib/active_record/associations/preloader/association.rb +64 -64
  27. data/lib/active_record/associations/preloader/belongs_to.rb +0 -2
  28. data/lib/active_record/associations/preloader/collection_association.rb +6 -6
  29. data/lib/active_record/associations/preloader/has_many.rb +0 -2
  30. data/lib/active_record/associations/preloader/singular_association.rb +6 -8
  31. data/lib/active_record/associations/preloader/through_association.rb +41 -41
  32. data/lib/active_record/associations/preloader.rb +94 -94
  33. data/lib/active_record/associations/singular_association.rb +8 -25
  34. data/lib/active_record/associations/through_association.rb +2 -5
  35. data/lib/active_record/associations.rb +1591 -1562
  36. data/lib/active_record/attribute/user_provided_default.rb +4 -2
  37. data/lib/active_record/attribute.rb +98 -71
  38. data/lib/active_record/attribute_assignment.rb +61 -61
  39. data/lib/active_record/attribute_decorators.rb +35 -13
  40. data/lib/active_record/attribute_methods/before_type_cast.rb +7 -7
  41. data/lib/active_record/attribute_methods/dirty.rb +229 -46
  42. data/lib/active_record/attribute_methods/primary_key.rb +74 -73
  43. data/lib/active_record/attribute_methods/read.rb +39 -35
  44. data/lib/active_record/attribute_methods/serialization.rb +7 -7
  45. data/lib/active_record/attribute_methods/time_zone_conversion.rb +35 -58
  46. data/lib/active_record/attribute_methods/write.rb +30 -33
  47. data/lib/active_record/attribute_methods.rb +56 -65
  48. data/lib/active_record/attribute_mutation_tracker.rb +63 -11
  49. data/lib/active_record/attribute_set/builder.rb +27 -33
  50. data/lib/active_record/attribute_set/yaml_encoder.rb +41 -0
  51. data/lib/active_record/attribute_set.rb +9 -6
  52. data/lib/active_record/attributes.rb +22 -22
  53. data/lib/active_record/autosave_association.rb +18 -13
  54. data/lib/active_record/base.rb +24 -22
  55. data/lib/active_record/callbacks.rb +56 -14
  56. data/lib/active_record/coders/yaml_column.rb +9 -11
  57. data/lib/active_record/collection_cache_key.rb +3 -4
  58. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +330 -284
  59. data/lib/active_record/connection_adapters/abstract/database_limits.rb +1 -3
  60. data/lib/active_record/connection_adapters/abstract/database_statements.rb +39 -37
  61. data/lib/active_record/connection_adapters/abstract/query_cache.rb +32 -27
  62. data/lib/active_record/connection_adapters/abstract/quoting.rb +62 -51
  63. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +10 -20
  64. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +74 -79
  65. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +53 -41
  66. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +120 -100
  67. data/lib/active_record/connection_adapters/abstract/transaction.rb +49 -43
  68. data/lib/active_record/connection_adapters/abstract_adapter.rb +165 -135
  69. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +404 -424
  70. data/lib/active_record/connection_adapters/column.rb +26 -4
  71. data/lib/active_record/connection_adapters/connection_specification.rb +128 -118
  72. data/lib/active_record/connection_adapters/mysql/column.rb +6 -31
  73. data/lib/active_record/connection_adapters/mysql/database_statements.rb +36 -49
  74. data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +22 -22
  75. data/lib/active_record/connection_adapters/mysql/quoting.rb +6 -12
  76. data/lib/active_record/connection_adapters/mysql/schema_creation.rb +49 -45
  77. data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +16 -19
  78. data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +54 -28
  79. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +43 -0
  80. data/lib/active_record/connection_adapters/mysql/type_metadata.rb +7 -6
  81. data/lib/active_record/connection_adapters/mysql2_adapter.rb +23 -27
  82. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +32 -53
  83. data/lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb +3 -3
  84. data/lib/active_record/connection_adapters/postgresql/oid/array.rb +19 -9
  85. data/lib/active_record/connection_adapters/postgresql/oid/bit.rb +5 -3
  86. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +1 -1
  87. data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +2 -2
  88. data/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +1 -1
  89. data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +3 -3
  90. data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +16 -16
  91. data/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +0 -10
  92. data/lib/active_record/connection_adapters/postgresql/oid/{rails_5_1_point.rb → legacy_point.rb} +9 -16
  93. data/lib/active_record/connection_adapters/postgresql/oid/money.rb +2 -2
  94. data/lib/active_record/connection_adapters/postgresql/oid/oid.rb +13 -0
  95. data/lib/active_record/connection_adapters/postgresql/oid/point.rb +28 -8
  96. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +32 -30
  97. data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +2 -1
  98. data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +51 -51
  99. data/lib/active_record/connection_adapters/postgresql/oid.rb +22 -21
  100. data/lib/active_record/connection_adapters/postgresql/quoting.rb +40 -35
  101. data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +15 -0
  102. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +37 -24
  103. data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +19 -23
  104. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +182 -222
  105. data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +6 -4
  106. data/lib/active_record/connection_adapters/postgresql/utils.rb +7 -5
  107. data/lib/active_record/connection_adapters/postgresql_adapter.rb +198 -167
  108. data/lib/active_record/connection_adapters/schema_cache.rb +16 -7
  109. data/lib/active_record/connection_adapters/sql_type_metadata.rb +3 -3
  110. data/lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb +1 -1
  111. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +16 -19
  112. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +1 -8
  113. data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +28 -0
  114. data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +17 -0
  115. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +32 -0
  116. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +184 -167
  117. data/lib/active_record/connection_adapters/statement_pool.rb +7 -7
  118. data/lib/active_record/connection_handling.rb +14 -26
  119. data/lib/active_record/core.rb +109 -93
  120. data/lib/active_record/counter_cache.rb +60 -13
  121. data/lib/active_record/define_callbacks.rb +20 -0
  122. data/lib/active_record/dynamic_matchers.rb +80 -79
  123. data/lib/active_record/enum.rb +8 -6
  124. data/lib/active_record/errors.rb +64 -15
  125. data/lib/active_record/explain.rb +1 -2
  126. data/lib/active_record/explain_registry.rb +1 -1
  127. data/lib/active_record/explain_subscriber.rb +7 -4
  128. data/lib/active_record/fixture_set/file.rb +11 -8
  129. data/lib/active_record/fixtures.rb +66 -53
  130. data/lib/active_record/gem_version.rb +1 -1
  131. data/lib/active_record/inheritance.rb +93 -79
  132. data/lib/active_record/integration.rb +7 -7
  133. data/lib/active_record/internal_metadata.rb +3 -16
  134. data/lib/active_record/legacy_yaml_adapter.rb +1 -1
  135. data/lib/active_record/locking/optimistic.rb +69 -74
  136. data/lib/active_record/locking/pessimistic.rb +10 -1
  137. data/lib/active_record/log_subscriber.rb +23 -28
  138. data/lib/active_record/migration/command_recorder.rb +94 -94
  139. data/lib/active_record/migration/compatibility.rb +100 -47
  140. data/lib/active_record/migration/join_table.rb +6 -6
  141. data/lib/active_record/migration.rb +153 -155
  142. data/lib/active_record/model_schema.rb +94 -107
  143. data/lib/active_record/nested_attributes.rb +200 -199
  144. data/lib/active_record/null_relation.rb +11 -34
  145. data/lib/active_record/persistence.rb +65 -50
  146. data/lib/active_record/query_cache.rb +2 -6
  147. data/lib/active_record/querying.rb +3 -4
  148. data/lib/active_record/railtie.rb +16 -17
  149. data/lib/active_record/railties/controller_runtime.rb +6 -2
  150. data/lib/active_record/railties/databases.rake +105 -133
  151. data/lib/active_record/railties/jdbcmysql_error.rb +1 -1
  152. data/lib/active_record/readonly_attributes.rb +2 -2
  153. data/lib/active_record/reflection.rb +154 -108
  154. data/lib/active_record/relation/batches/batch_enumerator.rb +1 -1
  155. data/lib/active_record/relation/batches.rb +80 -51
  156. data/lib/active_record/relation/calculations.rb +169 -162
  157. data/lib/active_record/relation/delegation.rb +32 -31
  158. data/lib/active_record/relation/finder_methods.rb +197 -231
  159. data/lib/active_record/relation/merger.rb +58 -62
  160. data/lib/active_record/relation/predicate_builder/array_handler.rb +7 -5
  161. data/lib/active_record/relation/predicate_builder/association_query_handler.rb +23 -23
  162. data/lib/active_record/relation/predicate_builder/base_handler.rb +3 -1
  163. data/lib/active_record/relation/predicate_builder/basic_object_handler.rb +0 -8
  164. data/lib/active_record/relation/predicate_builder/polymorphic_array_handler.rb +12 -10
  165. data/lib/active_record/relation/predicate_builder/range_handler.rb +0 -8
  166. data/lib/active_record/relation/predicate_builder.rb +92 -89
  167. data/lib/active_record/relation/query_attribute.rb +1 -1
  168. data/lib/active_record/relation/query_methods.rb +255 -293
  169. data/lib/active_record/relation/record_fetch_warning.rb +3 -3
  170. data/lib/active_record/relation/spawn_methods.rb +4 -5
  171. data/lib/active_record/relation/where_clause.rb +80 -65
  172. data/lib/active_record/relation/where_clause_factory.rb +47 -8
  173. data/lib/active_record/relation.rb +93 -119
  174. data/lib/active_record/result.rb +41 -32
  175. data/lib/active_record/runtime_registry.rb +3 -3
  176. data/lib/active_record/sanitization.rb +176 -192
  177. data/lib/active_record/schema.rb +3 -3
  178. data/lib/active_record/schema_dumper.rb +15 -38
  179. data/lib/active_record/schema_migration.rb +8 -4
  180. data/lib/active_record/scoping/default.rb +90 -90
  181. data/lib/active_record/scoping/named.rb +11 -11
  182. data/lib/active_record/scoping.rb +6 -6
  183. data/lib/active_record/secure_token.rb +2 -2
  184. data/lib/active_record/statement_cache.rb +13 -15
  185. data/lib/active_record/store.rb +31 -32
  186. data/lib/active_record/suppressor.rb +2 -1
  187. data/lib/active_record/table_metadata.rb +9 -5
  188. data/lib/active_record/tasks/database_tasks.rb +65 -55
  189. data/lib/active_record/tasks/mysql_database_tasks.rb +76 -73
  190. data/lib/active_record/tasks/postgresql_database_tasks.rb +72 -47
  191. data/lib/active_record/tasks/sqlite_database_tasks.rb +18 -16
  192. data/lib/active_record/timestamp.rb +46 -25
  193. data/lib/active_record/touch_later.rb +1 -2
  194. data/lib/active_record/transactions.rb +97 -109
  195. data/lib/active_record/type/adapter_specific_registry.rb +46 -42
  196. data/lib/active_record/type/decimal_without_scale.rb +13 -0
  197. data/lib/active_record/type/hash_lookup_type_map.rb +3 -3
  198. data/lib/active_record/type/internal/abstract_json.rb +4 -0
  199. data/lib/active_record/type/serialized.rb +14 -8
  200. data/lib/active_record/type/text.rb +9 -0
  201. data/lib/active_record/type/time.rb +0 -1
  202. data/lib/active_record/type/type_map.rb +11 -15
  203. data/lib/active_record/type/unsigned_integer.rb +15 -0
  204. data/lib/active_record/type.rb +17 -13
  205. data/lib/active_record/type_caster/connection.rb +8 -6
  206. data/lib/active_record/type_caster/map.rb +3 -1
  207. data/lib/active_record/type_caster.rb +2 -2
  208. data/lib/active_record/validations/associated.rb +1 -1
  209. data/lib/active_record/validations/presence.rb +2 -2
  210. data/lib/active_record/validations/uniqueness.rb +8 -39
  211. data/lib/active_record/validations.rb +4 -4
  212. data/lib/active_record/version.rb +1 -1
  213. data/lib/active_record.rb +20 -20
  214. data/lib/rails/generators/active_record/migration/migration_generator.rb +37 -34
  215. data/lib/rails/generators/active_record/migration.rb +1 -1
  216. data/lib/rails/generators/active_record/model/model_generator.rb +9 -9
  217. data/lib/rails/generators/active_record.rb +4 -4
  218. metadata +24 -13
  219. data/lib/active_record/relation/predicate_builder/class_handler.rb +0 -27
@@ -1,4 +1,4 @@
1
- require 'active_record'
1
+ require "active_record"
2
2
 
3
3
  db_namespace = namespace :db do
4
4
  desc "Set the environment value for the database"
@@ -7,7 +7,7 @@ db_namespace = namespace :db do
7
7
  ActiveRecord::InternalMetadata[:environment] = ActiveRecord::Migrator.current_environment
8
8
  end
9
9
 
10
- task :check_protected_environments => [:environment, :load_config] do
10
+ task check_protected_environments: [:environment, :load_config] do
11
11
  ActiveRecord::Tasks::DatabaseTasks.check_protected_environments!
12
12
  end
13
13
 
@@ -17,24 +17,24 @@ db_namespace = namespace :db do
17
17
  end
18
18
 
19
19
  namespace :create do
20
- task :all => :load_config do
20
+ task all: :load_config do
21
21
  ActiveRecord::Tasks::DatabaseTasks.create_all
22
22
  end
23
23
  end
24
24
 
25
- desc 'Creates the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:create:all to create all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to creating the development and test databases.'
26
- task :create => [:load_config] do
25
+ desc "Creates the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:create:all to create all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to creating the development and test databases."
26
+ task create: [:load_config] do
27
27
  ActiveRecord::Tasks::DatabaseTasks.create_current
28
28
  end
29
29
 
30
30
  namespace :drop do
31
- task :all => [:load_config, :check_protected_environments] do
31
+ task all: [:load_config, :check_protected_environments] do
32
32
  ActiveRecord::Tasks::DatabaseTasks.drop_all
33
33
  end
34
34
  end
35
35
 
36
- desc 'Drops the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to dropping the development and test databases.'
37
- task :drop => [:load_config, :check_protected_environments] do
36
+ desc "Drops the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to dropping the development and test databases."
37
+ task drop: [:load_config, :check_protected_environments] do
38
38
  db_namespace["drop:_unsafe"].invoke
39
39
  end
40
40
 
@@ -43,20 +43,20 @@ db_namespace = namespace :db do
43
43
  end
44
44
 
45
45
  namespace :purge do
46
- task :all => [:load_config, :check_protected_environments] do
46
+ task all: [:load_config, :check_protected_environments] do
47
47
  ActiveRecord::Tasks::DatabaseTasks.purge_all
48
48
  end
49
49
  end
50
50
 
51
51
  # desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:purge:all to purge all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
52
- task :purge => [:load_config, :check_protected_environments] do
52
+ task purge: [:load_config, :check_protected_environments] do
53
53
  ActiveRecord::Tasks::DatabaseTasks.purge_current
54
54
  end
55
55
 
56
56
  desc "Migrate the database (options: VERSION=x, VERBOSE=false, SCOPE=blog)."
57
- task :migrate => [:environment, :load_config] do
57
+ task migrate: [:environment, :load_config] do
58
58
  ActiveRecord::Tasks::DatabaseTasks.migrate
59
- db_namespace['_dump'].invoke
59
+ db_namespace["_dump"].invoke
60
60
  end
61
61
 
62
62
  # IMPORTANT: This task won't dump the schema if ActiveRecord::Base.dump_schema_after_migration is set to false
@@ -71,47 +71,47 @@ db_namespace = namespace :db do
71
71
  end
72
72
  # Allow this task to be called as many times as required. An example is the
73
73
  # migrate:redo task, which calls other two internally that depend on this one.
74
- db_namespace['_dump'].reenable
74
+ db_namespace["_dump"].reenable
75
75
  end
76
76
 
77
77
  namespace :migrate do
78
78
  # desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
79
- task :redo => [:environment, :load_config] do
79
+ task redo: [:environment, :load_config] do
80
80
  raise "Empty VERSION provided" if ENV["VERSION"] && ENV["VERSION"].empty?
81
81
 
82
- if ENV['VERSION']
83
- db_namespace['migrate:down'].invoke
84
- db_namespace['migrate:up'].invoke
82
+ if ENV["VERSION"]
83
+ db_namespace["migrate:down"].invoke
84
+ db_namespace["migrate:up"].invoke
85
85
  else
86
- db_namespace['rollback'].invoke
87
- db_namespace['migrate'].invoke
86
+ db_namespace["rollback"].invoke
87
+ db_namespace["migrate"].invoke
88
88
  end
89
89
  end
90
90
 
91
91
  # desc 'Resets your database using your migrations for the current environment'
92
- task :reset => ['db:drop', 'db:create', 'db:migrate']
92
+ task reset: ["db:drop", "db:create", "db:migrate"]
93
93
 
94
94
  # desc 'Runs the "up" for a given migration VERSION.'
95
- task :up => [:environment, :load_config] do
95
+ task up: [:environment, :load_config] do
96
96
  raise "VERSION is required" if !ENV["VERSION"] || ENV["VERSION"].empty?
97
97
 
98
- version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
98
+ version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
99
99
  ActiveRecord::Migrator.run(:up, ActiveRecord::Tasks::DatabaseTasks.migrations_paths, version)
100
- db_namespace['_dump'].invoke
100
+ db_namespace["_dump"].invoke
101
101
  end
102
102
 
103
103
  # desc 'Runs the "down" for a given migration VERSION.'
104
- task :down => [:environment, :load_config] do
104
+ task down: [:environment, :load_config] do
105
105
  raise "VERSION is required - To go down one migration, use db:rollback" if !ENV["VERSION"] || ENV["VERSION"].empty?
106
- version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
106
+ version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
107
107
  ActiveRecord::Migrator.run(:down, ActiveRecord::Tasks::DatabaseTasks.migrations_paths, version)
108
- db_namespace['_dump'].invoke
108
+ db_namespace["_dump"].invoke
109
109
  end
110
110
 
111
- desc 'Display status of migrations'
112
- task :status => [:environment, :load_config] do
111
+ desc "Display status of migrations"
112
+ task status: [:environment, :load_config] do
113
113
  unless ActiveRecord::SchemaMigration.table_exists?
114
- abort 'Schema migrations table does not exist yet.'
114
+ abort "Schema migrations table does not exist yet."
115
115
  end
116
116
 
117
117
  # output
@@ -126,93 +126,93 @@ db_namespace = namespace :db do
126
126
  end
127
127
  end
128
128
 
129
- desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
130
- task :rollback => [:environment, :load_config] do
131
- step = ENV['STEP'] ? ENV['STEP'].to_i : 1
129
+ desc "Rolls the schema back to the previous version (specify steps w/ STEP=n)."
130
+ task rollback: [:environment, :load_config] do
131
+ step = ENV["STEP"] ? ENV["STEP"].to_i : 1
132
132
  ActiveRecord::Migrator.rollback(ActiveRecord::Tasks::DatabaseTasks.migrations_paths, step)
133
- db_namespace['_dump'].invoke
133
+ db_namespace["_dump"].invoke
134
134
  end
135
135
 
136
136
  # desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
137
- task :forward => [:environment, :load_config] do
138
- step = ENV['STEP'] ? ENV['STEP'].to_i : 1
137
+ task forward: [:environment, :load_config] do
138
+ step = ENV["STEP"] ? ENV["STEP"].to_i : 1
139
139
  ActiveRecord::Migrator.forward(ActiveRecord::Tasks::DatabaseTasks.migrations_paths, step)
140
- db_namespace['_dump'].invoke
140
+ db_namespace["_dump"].invoke
141
141
  end
142
142
 
143
143
  # desc 'Drops and recreates the database from db/schema.rb for the current environment and loads the seeds.'
144
- task :reset => [ 'db:drop', 'db:setup' ]
144
+ task reset: [ "db:drop", "db:setup" ]
145
145
 
146
146
  # desc "Retrieves the charset for the current environment's database"
147
- task :charset => [:environment, :load_config] do
147
+ task charset: [:environment, :load_config] do
148
148
  puts ActiveRecord::Tasks::DatabaseTasks.charset_current
149
149
  end
150
150
 
151
151
  # desc "Retrieves the collation for the current environment's database"
152
- task :collation => [:environment, :load_config] do
152
+ task collation: [:environment, :load_config] do
153
153
  begin
154
154
  puts ActiveRecord::Tasks::DatabaseTasks.collation_current
155
155
  rescue NoMethodError
156
- $stderr.puts 'Sorry, your database adapter is not supported yet. Feel free to submit a patch.'
156
+ $stderr.puts "Sorry, your database adapter is not supported yet. Feel free to submit a patch."
157
157
  end
158
158
  end
159
159
 
160
- desc 'Retrieves the current schema version number'
161
- task :version => [:environment, :load_config] do
160
+ desc "Retrieves the current schema version number"
161
+ task version: [:environment, :load_config] do
162
162
  puts "Current version: #{ActiveRecord::Migrator.current_version}"
163
163
  end
164
164
 
165
165
  # desc "Raises an error if there are pending migrations"
166
- task :abort_if_pending_migrations => [:environment, :load_config] do
166
+ task abort_if_pending_migrations: [:environment, :load_config] do
167
167
  pending_migrations = ActiveRecord::Migrator.open(ActiveRecord::Tasks::DatabaseTasks.migrations_paths).pending_migrations
168
168
 
169
169
  if pending_migrations.any?
170
170
  puts "You have #{pending_migrations.size} pending #{pending_migrations.size > 1 ? 'migrations:' : 'migration:'}"
171
171
  pending_migrations.each do |pending_migration|
172
- puts ' %4d %s' % [pending_migration.version, pending_migration.name]
172
+ puts " %4d %s" % [pending_migration.version, pending_migration.name]
173
173
  end
174
174
  abort %{Run `rails db:migrate` to update your database then try again.}
175
175
  end
176
176
  end
177
177
 
178
- desc 'Creates the database, loads the schema, and initializes with the seed data (use db:reset to also drop the database first)'
179
- task :setup => ['db:schema:load_if_ruby', 'db:structure:load_if_sql', :seed]
178
+ desc "Creates the database, loads the schema, and initializes with the seed data (use db:reset to also drop the database first)"
179
+ task setup: ["db:schema:load_if_ruby", "db:structure:load_if_sql", :seed]
180
180
 
181
- desc 'Loads the seed data from db/seeds.rb'
181
+ desc "Loads the seed data from db/seeds.rb"
182
182
  task :seed do
183
- db_namespace['abort_if_pending_migrations'].invoke
183
+ db_namespace["abort_if_pending_migrations"].invoke
184
184
  ActiveRecord::Tasks::DatabaseTasks.load_seed
185
185
  end
186
186
 
187
187
  namespace :fixtures do
188
188
  desc "Loads fixtures into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z. Specify an alternative path (eg. spec/fixtures) using FIXTURES_PATH=spec/fixtures."
189
- task :load => [:environment, :load_config] do
190
- require 'active_record/fixtures'
189
+ task load: [:environment, :load_config] do
190
+ require "active_record/fixtures"
191
191
 
192
192
  base_dir = ActiveRecord::Tasks::DatabaseTasks.fixtures_path
193
193
 
194
- fixtures_dir = if ENV['FIXTURES_DIR']
195
- File.join base_dir, ENV['FIXTURES_DIR']
196
- else
197
- base_dir
198
- end
194
+ fixtures_dir = if ENV["FIXTURES_DIR"]
195
+ File.join base_dir, ENV["FIXTURES_DIR"]
196
+ else
197
+ base_dir
198
+ end
199
199
 
200
- fixture_files = if ENV['FIXTURES']
201
- ENV['FIXTURES'].split(',')
202
- else
203
- # The use of String#[] here is to support namespaced fixtures
204
- Dir["#{fixtures_dir}/**/*.yml"].map {|f| f[(fixtures_dir.size + 1)..-5] }
205
- end
200
+ fixture_files = if ENV["FIXTURES"]
201
+ ENV["FIXTURES"].split(",")
202
+ else
203
+ # The use of String#[] here is to support namespaced fixtures.
204
+ Dir["#{fixtures_dir}/**/*.yml"].map { |f| f[(fixtures_dir.size + 1)..-5] }
205
+ end
206
206
 
207
207
  ActiveRecord::FixtureSet.create_fixtures(fixtures_dir, fixture_files)
208
208
  end
209
209
 
210
210
  # desc "Search for a fixture given a LABEL or ID. Specify an alternative path (eg. spec/fixtures) using FIXTURES_PATH=spec/fixtures."
211
- task :identify => [:environment, :load_config] do
212
- require 'active_record/fixtures'
211
+ task identify: [:environment, :load_config] do
212
+ require "active_record/fixtures"
213
213
 
214
- label, id = ENV['LABEL'], ENV['ID']
215
- raise 'LABEL or ID required' if label.blank? && id.blank?
214
+ label, id = ENV["LABEL"], ENV["ID"]
215
+ raise "LABEL or ID required" if label.blank? && id.blank?
216
216
 
217
217
  puts %Q(The fixture ID for "#{label}" is #{ActiveRecord::FixtureSet.identify(label)}.) if label
218
218
 
@@ -233,39 +233,36 @@ db_namespace = namespace :db do
233
233
  end
234
234
 
235
235
  namespace :schema do
236
- desc 'Creates a db/schema.rb file that is portable against any DB supported by Active Record'
237
- task :dump => [:environment, :load_config] do
238
- require 'active_record/schema_dumper'
239
- filename = ENV['SCHEMA'] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, 'schema.rb')
236
+ desc "Creates a db/schema.rb file that is portable against any DB supported by Active Record"
237
+ task dump: [:environment, :load_config] do
238
+ require "active_record/schema_dumper"
239
+ filename = ENV["SCHEMA"] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "schema.rb")
240
240
  File.open(filename, "w:utf-8") do |file|
241
241
  ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
242
242
  end
243
- db_namespace['schema:dump'].reenable
243
+ db_namespace["schema:dump"].reenable
244
244
  end
245
245
 
246
- desc 'Loads a schema.rb file into the database'
247
- task :load => [:environment, :load_config, :check_protected_environments] do
248
- ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:ruby, ENV['SCHEMA'])
246
+ desc "Loads a schema.rb file into the database"
247
+ task load: [:environment, :load_config, :check_protected_environments] do
248
+ ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:ruby, ENV["SCHEMA"])
249
249
  end
250
250
 
251
- task :load_if_ruby => ['db:create', :environment] do
251
+ task load_if_ruby: ["db:create", :environment] do
252
252
  db_namespace["schema:load"].invoke if ActiveRecord::Base.schema_format == :ruby
253
253
  end
254
254
 
255
255
  namespace :cache do
256
- desc 'Creates a db/schema_cache.dump file.'
257
- task :dump => [:environment, :load_config] do
258
- con = ActiveRecord::Base.connection
259
- filename = File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "schema_cache.dump")
260
-
261
- con.schema_cache.clear!
262
- con.data_sources.each { |table| con.schema_cache.add(table) }
263
- open(filename, 'wb') { |f| f.write(Marshal.dump(con.schema_cache)) }
256
+ desc "Creates a db/schema_cache.yml file."
257
+ task dump: [:environment, :load_config] do
258
+ conn = ActiveRecord::Base.connection
259
+ filename = File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "schema_cache.yml")
260
+ ActiveRecord::Tasks::DatabaseTasks.dump_schema_cache(conn, filename)
264
261
  end
265
262
 
266
- desc 'Clears a db/schema_cache.dump file.'
267
- task :clear => [:environment, :load_config] do
268
- filename = File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "schema_cache.dump")
263
+ desc "Clears a db/schema_cache.yml file."
264
+ task clear: [:environment, :load_config] do
265
+ filename = File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "schema_cache.yml")
269
266
  rm_f filename, verbose: false
270
267
  end
271
268
  end
@@ -273,53 +270,44 @@ db_namespace = namespace :db do
273
270
  end
274
271
 
275
272
  namespace :structure do
276
- desc 'Dumps the database structure to db/structure.sql. Specify another file with SCHEMA=db/my_structure.sql'
277
- task :dump => [:environment, :load_config] do
278
- filename = ENV['SCHEMA'] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "structure.sql")
273
+ desc "Dumps the database structure to db/structure.sql. Specify another file with SCHEMA=db/my_structure.sql"
274
+ task dump: [:environment, :load_config] do
275
+ filename = ENV["SCHEMA"] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "structure.sql")
279
276
  current_config = ActiveRecord::Tasks::DatabaseTasks.current_config
280
277
  ActiveRecord::Tasks::DatabaseTasks.structure_dump(current_config, filename)
281
278
 
282
- if ActiveRecord::Base.connection.supports_migrations? &&
283
- ActiveRecord::SchemaMigration.table_exists?
279
+ if ActiveRecord::SchemaMigration.table_exists?
284
280
  File.open(filename, "a") do |f|
285
281
  f.puts ActiveRecord::Base.connection.dump_schema_information
286
282
  f.print "\n"
287
283
  end
288
284
  end
289
- db_namespace['structure:dump'].reenable
285
+ db_namespace["structure:dump"].reenable
290
286
  end
291
287
 
292
288
  desc "Recreates the databases from the structure.sql file"
293
- task :load => [:environment, :load_config, :check_protected_environments] do
294
- ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:sql, ENV['SCHEMA'])
289
+ task load: [:environment, :load_config, :check_protected_environments] do
290
+ ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:sql, ENV["SCHEMA"])
295
291
  end
296
292
 
297
- task :load_if_sql => ['db:create', :environment] do
293
+ task load_if_sql: ["db:create", :environment] do
298
294
  db_namespace["structure:load"].invoke if ActiveRecord::Base.schema_format == :sql
299
295
  end
300
296
  end
301
297
 
302
298
  namespace :test do
303
-
304
- task :deprecated do
305
- Rake.application.top_level_tasks.grep(/^db:test:/).each do |task|
306
- $stderr.puts "WARNING: #{task} is deprecated. The Rails test helper now maintains " \
307
- "your test schema automatically, see the release notes for details."
308
- end
309
- end
310
-
311
299
  # desc "Recreate the test database from the current schema"
312
- task :load => %w(db:test:purge) do
300
+ task load: %w(db:test:purge) do
313
301
  case ActiveRecord::Base.schema_format
314
- when :ruby
315
- db_namespace["test:load_schema"].invoke
316
- when :sql
317
- db_namespace["test:load_structure"].invoke
302
+ when :ruby
303
+ db_namespace["test:load_schema"].invoke
304
+ when :sql
305
+ db_namespace["test:load_structure"].invoke
318
306
  end
319
307
  end
320
308
 
321
309
  # desc "Recreate the test database from an existent schema.rb file"
322
- task :load_schema => %w(db:test:purge) do
310
+ task load_schema: %w(db:test:purge) do
323
311
  begin
324
312
  should_reconnect = ActiveRecord::Base.connection_pool.active_connection?
325
313
  ActiveRecord::Schema.verbose = false
@@ -332,35 +320,19 @@ db_namespace = namespace :db do
332
320
  end
333
321
 
334
322
  # desc "Recreate the test database from an existent structure.sql file"
335
- task :load_structure => %w(db:test:purge) do
323
+ task load_structure: %w(db:test:purge) do
336
324
  ActiveRecord::Tasks::DatabaseTasks.load_schema ActiveRecord::Base.configurations["test"], :sql, ENV["SCHEMA"], "test"
337
325
  end
338
326
 
339
- # desc "Recreate the test database from a fresh schema"
340
- task :clone => %w(db:test:deprecated environment) do
341
- case ActiveRecord::Base.schema_format
342
- when :ruby
343
- db_namespace["test:clone_schema"].invoke
344
- when :sql
345
- db_namespace["test:clone_structure"].invoke
346
- end
347
- end
348
-
349
- # desc "Recreate the test database from a fresh schema.rb file"
350
- task :clone_schema => %w(db:test:deprecated db:schema:dump db:test:load_schema)
351
-
352
- # desc "Recreate the test database from a fresh structure.sql file"
353
- task :clone_structure => %w(db:test:deprecated db:structure:dump db:test:load_structure)
354
-
355
327
  # desc "Empty the test database"
356
- task :purge => %w(environment load_config check_protected_environments) do
357
- ActiveRecord::Tasks::DatabaseTasks.purge ActiveRecord::Base.configurations['test']
328
+ task purge: %w(environment load_config check_protected_environments) do
329
+ ActiveRecord::Tasks::DatabaseTasks.purge ActiveRecord::Base.configurations["test"]
358
330
  end
359
331
 
360
332
  # desc 'Load the test schema'
361
- task :prepare => %w(environment load_config) do
333
+ task prepare: %w(environment load_config) do
362
334
  unless ActiveRecord::Base.configurations.blank?
363
- db_namespace['test:load'].invoke
335
+ db_namespace["test:load"].invoke
364
336
  end
365
337
  end
366
338
  end
@@ -369,13 +341,13 @@ end
369
341
  namespace :railties do
370
342
  namespace :install do
371
343
  # desc "Copies missing migrations from Railties (e.g. engines). You can specify Railties to use with FROM=railtie1,railtie2"
372
- task :migrations => :'db:load_config' do
373
- to_load = ENV['FROM'].blank? ? :all : ENV['FROM'].split(",").map(&:strip)
344
+ task migrations: :'db:load_config' do
345
+ to_load = ENV["FROM"].blank? ? :all : ENV["FROM"].split(",").map(&:strip)
374
346
  railties = {}
375
347
  Rails.application.migration_railties.each do |railtie|
376
348
  next unless to_load == :all || to_load.include?(railtie.railtie_name)
377
349
 
378
- if railtie.respond_to?(:paths) && (path = railtie.paths['db/migrate'].first)
350
+ if railtie.respond_to?(:paths) && (path = railtie.paths["db/migrate"].first)
379
351
  railties[railtie.railtie_name] = path
380
352
  end
381
353
  end
@@ -389,7 +361,7 @@ namespace :railties do
389
361
  end
390
362
 
391
363
  ActiveRecord::Migration.copy(ActiveRecord::Tasks::DatabaseTasks.migrations_paths.first, railties,
392
- :on_skip => on_skip, :on_copy => on_copy)
364
+ on_skip: on_skip, on_copy: on_copy)
393
365
  end
394
366
  end
395
367
  end
@@ -3,7 +3,7 @@ module ArJdbcMySQL #:nodoc:
3
3
  class Error < StandardError #:nodoc:
4
4
  attr_accessor :error_number, :sql_state
5
5
 
6
- def initialize msg
6
+ def initialize(msg)
7
7
  super
8
8
  @error_number = nil
9
9
  @sql_state = nil
@@ -11,12 +11,12 @@ module ActiveRecord
11
11
  # Attributes listed as readonly will be used to create a new record but update operations will
12
12
  # ignore these fields.
13
13
  def attr_readonly(*attributes)
14
- self._attr_readonly = Set.new(attributes.map(&:to_s)) + (self._attr_readonly || [])
14
+ self._attr_readonly = Set.new(attributes.map(&:to_s)) + (_attr_readonly || [])
15
15
  end
16
16
 
17
17
  # Returns an array of all the attributes that have been specified as readonly.
18
18
  def readonly_attributes
19
- self._attr_readonly
19
+ _attr_readonly
20
20
  end
21
21
  end
22
22
  end