sequel 4.49.0 → 5.0.0

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.
Files changed (477) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +3 -5
  6. data/doc/advanced_associations.rdoc +86 -163
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/schema_modification.rdoc +63 -60
  29. data/doc/security.rdoc +97 -88
  30. data/doc/sharding.rdoc +43 -30
  31. data/doc/sql.rdoc +53 -65
  32. data/doc/testing.rdoc +3 -5
  33. data/doc/thread_safety.rdoc +2 -4
  34. data/doc/transactions.rdoc +18 -17
  35. data/doc/validations.rdoc +48 -45
  36. data/doc/virtual_rows.rdoc +87 -115
  37. data/lib/sequel.rb +1 -1
  38. data/lib/sequel/adapters/ado.rb +9 -25
  39. data/lib/sequel/adapters/ado/access.rb +7 -13
  40. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  41. data/lib/sequel/adapters/amalgalite.rb +3 -18
  42. data/lib/sequel/adapters/ibmdb.rb +9 -45
  43. data/lib/sequel/adapters/jdbc.rb +13 -73
  44. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  45. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  46. data/lib/sequel/adapters/jdbc/h2.rb +4 -25
  47. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
  48. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  49. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  50. data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
  51. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  52. data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
  53. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  54. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  55. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  56. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  57. data/lib/sequel/adapters/mock.rb +4 -30
  58. data/lib/sequel/adapters/mysql.rb +7 -44
  59. data/lib/sequel/adapters/mysql2.rb +5 -23
  60. data/lib/sequel/adapters/odbc.rb +0 -19
  61. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  62. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  63. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  64. data/lib/sequel/adapters/oracle.rb +7 -13
  65. data/lib/sequel/adapters/postgres.rb +13 -57
  66. data/lib/sequel/adapters/postgresql.rb +1 -1
  67. data/lib/sequel/adapters/shared/access.rb +11 -51
  68. data/lib/sequel/adapters/shared/db2.rb +3 -61
  69. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  70. data/lib/sequel/adapters/shared/mysql.rb +23 -224
  71. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  72. data/lib/sequel/adapters/shared/postgres.rb +44 -259
  73. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  74. data/lib/sequel/adapters/shared/sqlite.rb +12 -101
  75. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  76. data/lib/sequel/adapters/sqlite.rb +2 -19
  77. data/lib/sequel/adapters/tinytds.rb +5 -15
  78. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  79. data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
  80. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  81. data/lib/sequel/adapters/utils/replace.rb +0 -5
  82. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  83. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  84. data/lib/sequel/ast_transformer.rb +3 -94
  85. data/lib/sequel/connection_pool.rb +26 -28
  86. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  87. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  88. data/lib/sequel/connection_pool/single.rb +0 -2
  89. data/lib/sequel/connection_pool/threaded.rb +94 -110
  90. data/lib/sequel/core.rb +42 -101
  91. data/lib/sequel/database.rb +12 -2
  92. data/lib/sequel/database/connecting.rb +23 -60
  93. data/lib/sequel/database/dataset.rb +6 -9
  94. data/lib/sequel/database/dataset_defaults.rb +4 -48
  95. data/lib/sequel/database/features.rb +5 -4
  96. data/lib/sequel/database/logging.rb +2 -9
  97. data/lib/sequel/database/misc.rb +23 -55
  98. data/lib/sequel/database/query.rb +8 -13
  99. data/lib/sequel/database/schema_generator.rb +89 -64
  100. data/lib/sequel/database/schema_methods.rb +61 -79
  101. data/lib/sequel/database/transactions.rb +4 -24
  102. data/lib/sequel/dataset.rb +18 -10
  103. data/lib/sequel/dataset/actions.rb +53 -107
  104. data/lib/sequel/dataset/dataset_module.rb +3 -15
  105. data/lib/sequel/dataset/features.rb +30 -30
  106. data/lib/sequel/dataset/graph.rb +40 -49
  107. data/lib/sequel/dataset/misc.rb +12 -37
  108. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  109. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  110. data/lib/sequel/dataset/query.rb +71 -155
  111. data/lib/sequel/dataset/sql.rb +30 -225
  112. data/lib/sequel/deprecated.rb +18 -27
  113. data/lib/sequel/exceptions.rb +1 -17
  114. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  115. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  116. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  117. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  118. data/lib/sequel/extensions/connection_validator.rb +1 -1
  119. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  120. data/lib/sequel/extensions/core_extensions.rb +39 -49
  121. data/lib/sequel/extensions/core_refinements.rb +39 -45
  122. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  123. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  124. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  125. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  126. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  127. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  128. data/lib/sequel/extensions/from_block.rb +1 -35
  129. data/lib/sequel/extensions/graph_each.rb +2 -2
  130. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  131. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  132. data/lib/sequel/extensions/inflector.rb +4 -4
  133. data/lib/sequel/extensions/migration.rb +23 -40
  134. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  135. data/lib/sequel/extensions/null_dataset.rb +2 -8
  136. data/lib/sequel/extensions/pagination.rb +1 -17
  137. data/lib/sequel/extensions/pg_array.rb +20 -189
  138. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  139. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  140. data/lib/sequel/extensions/pg_inet.rb +2 -15
  141. data/lib/sequel/extensions/pg_interval.rb +1 -20
  142. data/lib/sequel/extensions/pg_json.rb +7 -27
  143. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  144. data/lib/sequel/extensions/pg_range.rb +6 -121
  145. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  146. data/lib/sequel/extensions/pg_row.rb +5 -77
  147. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  148. data/lib/sequel/extensions/query.rb +3 -4
  149. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  150. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  151. data/lib/sequel/extensions/select_remove.rb +3 -3
  152. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  153. data/lib/sequel/extensions/sql_comments.rb +2 -2
  154. data/lib/sequel/extensions/string_agg.rb +11 -8
  155. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  156. data/lib/sequel/model.rb +27 -62
  157. data/lib/sequel/model/associations.rb +128 -131
  158. data/lib/sequel/model/base.rb +171 -711
  159. data/lib/sequel/model/default_inflections.rb +1 -1
  160. data/lib/sequel/model/errors.rb +0 -3
  161. data/lib/sequel/model/exceptions.rb +2 -6
  162. data/lib/sequel/model/inflections.rb +1 -26
  163. data/lib/sequel/model/plugins.rb +1 -0
  164. data/lib/sequel/plugins/active_model.rb +2 -5
  165. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  166. data/lib/sequel/plugins/association_pks.rb +14 -28
  167. data/lib/sequel/plugins/association_proxies.rb +6 -7
  168. data/lib/sequel/plugins/auto_validations.rb +4 -4
  169. data/lib/sequel/plugins/before_after_save.rb +0 -43
  170. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  171. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  172. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  173. data/lib/sequel/plugins/caching.rb +5 -5
  174. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  175. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  176. data/lib/sequel/plugins/column_select.rb +2 -2
  177. data/lib/sequel/plugins/composition.rb +15 -24
  178. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  179. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  180. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  181. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  182. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  183. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  184. data/lib/sequel/plugins/finder.rb +16 -10
  185. data/lib/sequel/plugins/force_encoding.rb +1 -7
  186. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  187. data/lib/sequel/plugins/input_transformer.rb +10 -11
  188. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  189. data/lib/sequel/plugins/instance_filters.rb +5 -5
  190. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  191. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  192. data/lib/sequel/plugins/json_serializer.rb +19 -19
  193. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  194. data/lib/sequel/plugins/list.rb +6 -6
  195. data/lib/sequel/plugins/many_through_many.rb +11 -8
  196. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  197. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  198. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  199. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  200. data/lib/sequel/plugins/pg_row.rb +2 -11
  201. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  202. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  203. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  204. data/lib/sequel/plugins/serialization.rb +15 -33
  205. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  206. data/lib/sequel/plugins/sharding.rb +2 -8
  207. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  208. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  209. data/lib/sequel/plugins/static_cache.rb +8 -9
  210. data/lib/sequel/plugins/string_stripper.rb +3 -3
  211. data/lib/sequel/plugins/subclasses.rb +1 -1
  212. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  213. data/lib/sequel/plugins/table_select.rb +2 -2
  214. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  215. data/lib/sequel/plugins/timestamps.rb +6 -7
  216. data/lib/sequel/plugins/touch.rb +4 -8
  217. data/lib/sequel/plugins/tree.rb +3 -3
  218. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  219. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  220. data/lib/sequel/plugins/update_or_create.rb +3 -3
  221. data/lib/sequel/plugins/update_refresh.rb +3 -3
  222. data/lib/sequel/plugins/uuid.rb +7 -11
  223. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  224. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  225. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  226. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  227. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  228. data/lib/sequel/sql.rb +145 -276
  229. data/lib/sequel/timezones.rb +8 -22
  230. data/lib/sequel/version.rb +2 -2
  231. data/spec/adapter_spec.rb +1 -1
  232. data/spec/adapters/db2_spec.rb +2 -103
  233. data/spec/adapters/mssql_spec.rb +89 -68
  234. data/spec/adapters/mysql_spec.rb +101 -480
  235. data/spec/adapters/oracle_spec.rb +1 -9
  236. data/spec/adapters/postgres_spec.rb +312 -565
  237. data/spec/adapters/spec_helper.rb +12 -31
  238. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  239. data/spec/adapters/sqlite_spec.rb +8 -146
  240. data/spec/bin_spec.rb +11 -16
  241. data/spec/core/connection_pool_spec.rb +173 -74
  242. data/spec/core/database_spec.rb +64 -244
  243. data/spec/core/dataset_spec.rb +81 -415
  244. data/spec/core/deprecated_spec.rb +3 -3
  245. data/spec/core/expression_filters_spec.rb +37 -144
  246. data/spec/core/mock_adapter_spec.rb +176 -4
  247. data/spec/core/object_graph_spec.rb +11 -60
  248. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  249. data/spec/core/schema_generator_spec.rb +51 -40
  250. data/spec/core/schema_spec.rb +74 -77
  251. data/spec/core/spec_helper.rb +6 -24
  252. data/spec/core/version_spec.rb +1 -1
  253. data/spec/core_extensions_spec.rb +7 -83
  254. data/spec/core_model_spec.rb +2 -2
  255. data/spec/deprecation_helper.rb +2 -14
  256. data/spec/extensions/accessed_columns_spec.rb +1 -1
  257. data/spec/extensions/active_model_spec.rb +3 -3
  258. data/spec/extensions/after_initialize_spec.rb +1 -1
  259. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  260. data/spec/extensions/association_dependencies_spec.rb +1 -1
  261. data/spec/extensions/association_pks_spec.rb +4 -59
  262. data/spec/extensions/association_proxies_spec.rb +1 -1
  263. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  264. data/spec/extensions/auto_validations_spec.rb +1 -1
  265. data/spec/extensions/blacklist_security_spec.rb +1 -1
  266. data/spec/extensions/blank_spec.rb +1 -1
  267. data/spec/extensions/boolean_readers_spec.rb +1 -1
  268. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  269. data/spec/extensions/caching_spec.rb +1 -1
  270. data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
  271. data/spec/extensions/column_conflicts_spec.rb +1 -1
  272. data/spec/extensions/column_select_spec.rb +4 -4
  273. data/spec/extensions/columns_introspection_spec.rb +1 -1
  274. data/spec/extensions/columns_updated_spec.rb +1 -1
  275. data/spec/extensions/composition_spec.rb +1 -7
  276. data/spec/extensions/connection_expiration_spec.rb +3 -3
  277. data/spec/extensions/connection_validator_spec.rb +3 -3
  278. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  279. data/spec/extensions/constraint_validations_spec.rb +1 -1
  280. data/spec/extensions/core_refinements_spec.rb +1 -3
  281. data/spec/extensions/csv_serializer_spec.rb +4 -9
  282. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  283. data/spec/extensions/dataset_associations_spec.rb +2 -1
  284. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  285. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  286. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  287. data/spec/extensions/defaults_setter_spec.rb +2 -2
  288. data/spec/extensions/delay_add_association_spec.rb +8 -9
  289. data/spec/extensions/dirty_spec.rb +1 -1
  290. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  291. data/spec/extensions/eager_each_spec.rb +2 -2
  292. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  293. data/spec/extensions/error_splitter_spec.rb +1 -1
  294. data/spec/extensions/error_sql_spec.rb +1 -1
  295. data/spec/extensions/eval_inspect_spec.rb +1 -1
  296. data/spec/extensions/finder_spec.rb +1 -1
  297. data/spec/extensions/force_encoding_spec.rb +2 -5
  298. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  299. data/spec/extensions/graph_each_spec.rb +5 -5
  300. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  301. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  302. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  303. data/spec/extensions/inflector_spec.rb +1 -1
  304. data/spec/extensions/input_transformer_spec.rb +7 -2
  305. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  306. data/spec/extensions/instance_filters_spec.rb +1 -1
  307. data/spec/extensions/instance_hooks_spec.rb +1 -95
  308. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  309. data/spec/extensions/json_serializer_spec.rb +1 -1
  310. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  311. data/spec/extensions/list_spec.rb +1 -1
  312. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  313. data/spec/extensions/many_through_many_spec.rb +1 -1
  314. data/spec/extensions/migration_spec.rb +2 -2
  315. data/spec/extensions/modification_detection_spec.rb +1 -1
  316. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  317. data/spec/extensions/named_timezones_spec.rb +3 -3
  318. data/spec/extensions/nested_attributes_spec.rb +1 -29
  319. data/spec/extensions/null_dataset_spec.rb +1 -11
  320. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  321. data/spec/extensions/pagination_spec.rb +1 -1
  322. data/spec/extensions/pg_array_associations_spec.rb +4 -1
  323. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  324. data/spec/extensions/pg_array_spec.rb +3 -48
  325. data/spec/extensions/pg_enum_spec.rb +1 -1
  326. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  327. data/spec/extensions/pg_hstore_spec.rb +23 -32
  328. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_inet_spec.rb +1 -14
  330. data/spec/extensions/pg_interval_spec.rb +3 -13
  331. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  332. data/spec/extensions/pg_json_spec.rb +1 -13
  333. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  334. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_range_spec.rb +3 -88
  336. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  337. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  338. data/spec/extensions/pg_row_spec.rb +1 -44
  339. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  340. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  341. data/spec/extensions/prepared_statements_spec.rb +13 -48
  342. data/spec/extensions/pretty_table_spec.rb +1 -1
  343. data/spec/extensions/query_spec.rb +1 -12
  344. data/spec/extensions/rcte_tree_spec.rb +1 -1
  345. data/spec/extensions/round_timestamps_spec.rb +1 -5
  346. data/spec/extensions/s_spec.rb +1 -1
  347. data/spec/extensions/schema_caching_spec.rb +1 -1
  348. data/spec/extensions/schema_dumper_spec.rb +1 -1
  349. data/spec/extensions/select_remove_spec.rb +1 -1
  350. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  351. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  352. data/spec/extensions/serialization_spec.rb +2 -14
  353. data/spec/extensions/server_block_spec.rb +1 -1
  354. data/spec/extensions/server_logging_spec.rb +2 -2
  355. data/spec/extensions/sharding_spec.rb +1 -1
  356. data/spec/extensions/shared_caching_spec.rb +1 -28
  357. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  358. data/spec/extensions/singular_table_names_spec.rb +1 -1
  359. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  360. data/spec/extensions/spec_helper.rb +5 -27
  361. data/spec/extensions/split_array_nil_spec.rb +1 -1
  362. data/spec/extensions/split_values_spec.rb +1 -1
  363. data/spec/extensions/sql_comments_spec.rb +1 -1
  364. data/spec/extensions/sql_expr_spec.rb +1 -1
  365. data/spec/extensions/static_cache_spec.rb +1 -1
  366. data/spec/extensions/string_agg_spec.rb +2 -2
  367. data/spec/extensions/string_date_time_spec.rb +1 -1
  368. data/spec/extensions/string_stripper_spec.rb +1 -1
  369. data/spec/extensions/subclasses_spec.rb +1 -1
  370. data/spec/extensions/subset_conditions_spec.rb +1 -1
  371. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  372. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  373. data/spec/extensions/table_select_spec.rb +4 -4
  374. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  375. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  376. data/spec/extensions/timestamps_spec.rb +3 -3
  377. data/spec/extensions/to_dot_spec.rb +1 -1
  378. data/spec/extensions/touch_spec.rb +1 -1
  379. data/spec/extensions/tree_spec.rb +1 -1
  380. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  381. data/spec/extensions/unlimited_update_spec.rb +1 -1
  382. data/spec/extensions/update_or_create_spec.rb +1 -1
  383. data/spec/extensions/update_primary_key_spec.rb +4 -3
  384. data/spec/extensions/update_refresh_spec.rb +1 -1
  385. data/spec/extensions/uuid_spec.rb +10 -12
  386. data/spec/extensions/validate_associated_spec.rb +1 -1
  387. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  388. data/spec/extensions/validation_contexts_spec.rb +1 -1
  389. data/spec/extensions/validation_helpers_spec.rb +10 -44
  390. data/spec/extensions/whitelist_security_spec.rb +5 -5
  391. data/spec/extensions/xml_serializer_spec.rb +3 -3
  392. data/spec/guards_helper.rb +2 -1
  393. data/spec/integration/associations_test.rb +1 -23
  394. data/spec/integration/database_test.rb +7 -7
  395. data/spec/integration/dataset_test.rb +5 -47
  396. data/spec/integration/eager_loader_test.rb +1 -1
  397. data/spec/integration/migrator_test.rb +1 -1
  398. data/spec/integration/model_test.rb +4 -82
  399. data/spec/integration/plugin_test.rb +6 -22
  400. data/spec/integration/prepared_statement_test.rb +8 -88
  401. data/spec/integration/schema_test.rb +6 -6
  402. data/spec/integration/spec_helper.rb +13 -21
  403. data/spec/integration/timezone_test.rb +5 -5
  404. data/spec/integration/transaction_test.rb +3 -55
  405. data/spec/integration/type_test.rb +9 -9
  406. data/spec/model/association_reflection_spec.rb +24 -9
  407. data/spec/model/associations_spec.rb +124 -303
  408. data/spec/model/base_spec.rb +18 -137
  409. data/spec/model/class_dataset_methods_spec.rb +2 -20
  410. data/spec/model/dataset_methods_spec.rb +1 -20
  411. data/spec/model/eager_loading_spec.rb +17 -11
  412. data/spec/model/hooks_spec.rb +5 -300
  413. data/spec/model/inflector_spec.rb +1 -1
  414. data/spec/model/model_spec.rb +15 -320
  415. data/spec/model/plugins_spec.rb +2 -16
  416. data/spec/model/record_spec.rb +29 -121
  417. data/spec/model/spec_helper.rb +5 -15
  418. data/spec/model/validations_spec.rb +1 -1
  419. data/spec/sequel_warning.rb +1 -12
  420. metadata +8 -64
  421. data/doc/active_record.rdoc +0 -927
  422. data/lib/sequel/adapters/cubrid.rb +0 -160
  423. data/lib/sequel/adapters/do.rb +0 -166
  424. data/lib/sequel/adapters/do/mysql.rb +0 -69
  425. data/lib/sequel/adapters/do/postgres.rb +0 -46
  426. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  427. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  428. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  429. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  430. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  431. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  432. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  433. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  434. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  435. data/lib/sequel/adapters/shared/informix.rb +0 -63
  436. data/lib/sequel/adapters/shared/progress.rb +0 -40
  437. data/lib/sequel/adapters/swift.rb +0 -169
  438. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  439. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  440. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  441. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  442. data/lib/sequel/dataset/mutation.rb +0 -98
  443. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  444. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  445. data/lib/sequel/extensions/filter_having.rb +0 -65
  446. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  447. data/lib/sequel/extensions/meta_def.rb +0 -37
  448. data/lib/sequel/extensions/query_literals.rb +0 -86
  449. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  450. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  451. data/lib/sequel/extensions/set_overrides.rb +0 -82
  452. data/lib/sequel/no_core_ext.rb +0 -4
  453. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  454. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  455. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  456. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  457. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  458. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  459. data/lib/sequel/plugins/schema.rb +0 -84
  460. data/lib/sequel/plugins/scissors.rb +0 -37
  461. data/spec/core/dataset_mutation_spec.rb +0 -253
  462. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  463. data/spec/extensions/before_after_save_spec.rb +0 -40
  464. data/spec/extensions/filter_having_spec.rb +0 -42
  465. data/spec/extensions/from_block_spec.rb +0 -21
  466. data/spec/extensions/hash_aliases_spec.rb +0 -26
  467. data/spec/extensions/identifier_columns_spec.rb +0 -19
  468. data/spec/extensions/meta_def_spec.rb +0 -35
  469. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  470. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  471. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  472. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  473. data/spec/extensions/query_literals_spec.rb +0 -185
  474. data/spec/extensions/schema_spec.rb +0 -123
  475. data/spec/extensions/scissors_spec.rb +0 -27
  476. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  477. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -2,15 +2,15 @@
2
2
 
3
3
  module Sequel
4
4
  module Plugins
5
- # Sequel's built in Serialization plugin allows you to keep serialized
5
+ # The serialization plugin allows you to keep serialized
6
6
  # ruby objects in the database, while giving you deserialized objects
7
7
  # when you call an accessor.
8
8
  #
9
9
  # This plugin works by keeping the serialized value in the values, and
10
10
  # adding a deserialized_values hash. The reader method for serialized columns
11
11
  # will check the deserialized_values for the value, return it if present,
12
- # or deserialized the entry in values and return it. The writer method will
13
- # set the deserialized_values entry. This plugin adds a before_save hook
12
+ # or deserialize the entry in values and return it. The writer method will
13
+ # set the deserialized_values entry. This plugin adds a before_validation hook
14
14
  # that serializes all deserialized_values to values.
15
15
  #
16
16
  # You can specify the serialization format as a pair of serializer/deserializer
@@ -37,9 +37,7 @@ module Sequel
37
37
  #
38
38
  # # Register custom serializer/deserializer pair, if desired
39
39
  # require 'sequel/plugins/serialization'
40
- # Sequel::Plugins::Serialization.register_format(:reverse,
41
- # lambda(&:reverse),
42
- # lambda(&:reverse))
40
+ # Sequel::Plugins::Serialization.register_format(:reverse, :reverse.to_proc, :reverse.to_proc)
43
41
  #
44
42
  # class User < Sequel::Model
45
43
  # # Built-in format support when loading the plugin
@@ -53,10 +51,10 @@ module Sequel
53
51
  # serialize_attributes :reverse, :password
54
52
  #
55
53
  # # Use a custom serializer/deserializer pair without registering
56
- # serialize_attributes [lambda(&:reverse), lambda(&:reverse)], :password
54
+ # serialize_attributes [:reverse.to_proc, :reverse.to_proc], :password
57
55
  # end
58
56
  # user = User.create
59
- # user.permissions = { :global => 'read-only' }
57
+ # user.permissions = {global: 'read-only'}
60
58
  # user.save
61
59
  #
62
60
  # Note that if you mutate serialized column values without reassigning them,
@@ -77,7 +75,7 @@ module Sequel
77
75
  # Set up the column readers to do deserialization and the column writers
78
76
  # to save the value in deserialized_values.
79
77
  def self.apply(model, *args)
80
- model.instance_eval do
78
+ model.instance_exec do
81
79
  @deserialization_map = {}
82
80
  @serialization_map = {}
83
81
  end
@@ -93,7 +91,7 @@ module Sequel
93
91
  # models to pick this format by name. Both serializer and deserializer
94
92
  # should be callable objects.
95
93
  def self.register_format(format, serializer, deserializer)
96
- REGISTERED_FORMATS[format] = [serializer, deserializer]
94
+ Sequel.synchronize{REGISTERED_FORMATS[format] = [serializer, deserializer].freeze}
97
95
  end
98
96
  register_format(:marshal, lambda{|v| [Marshal.dump(v)].pack('m')},
99
97
  lambda do |v|
@@ -101,8 +99,8 @@ module Sequel
101
99
  v = v.unpack('m')[0] unless v[0..1] == "\x04\x08"
102
100
  Marshal.load(v)
103
101
  end)
104
- register_format(:yaml, lambda(&:to_yaml), lambda{|v| YAML.load(v)})
105
- register_format(:json, lambda{|v| Sequel.object_to_json(v)}, lambda{|v| Sequel.parse_json(v)})
102
+ register_format(:yaml, :to_yaml.to_proc, lambda{|s| YAML.load(s)})
103
+ register_format(:json, Sequel.method(:object_to_json), Sequel.method(:parse_json))
106
104
 
107
105
  module ClassMethods
108
106
  # A hash with column name symbols and callable values, with the value
@@ -113,15 +111,6 @@ module Sequel
113
111
  # called to serialize the column.
114
112
  attr_reader :serialization_map
115
113
 
116
- def serialization_module
117
- Sequel::Deprecation.deprecate('Sequel::Model.serialization_module', 'There is no replacement')
118
- @serialization_module
119
- end
120
- def serialization_module=(v)
121
- Sequel::Deprecation.deprecate('Sequel::Model.serialization_module=', 'There is no replacement')
122
- @serialization_module = v
123
- end
124
-
125
114
  Plugins.inherited_instance_variables(self, :@deserialization_map=>:dup, :@serialization_map=>:dup)
126
115
 
127
116
  # Freeze serialization metadata when freezing model class.
@@ -137,8 +126,8 @@ module Sequel
137
126
  # and instance level writer that stores new deserialized values.
138
127
  def serialize_attributes(format, *columns)
139
128
  if format.is_a?(Symbol)
140
- unless format = REGISTERED_FORMATS[format]
141
- raise(Error, "Unsupported serialization format: #{format} (valid formats: #{REGISTERED_FORMATS.keys.map(&:inspect).join})")
129
+ unless format = Sequel.synchronize{REGISTERED_FORMATS[format]}
130
+ raise(Error, "Unsupported serialization format: #{format} (valid formats: #{Sequel.synchronize{REGISTERED_FORMATS.keys}.map(&:inspect).join})")
142
131
  end
143
132
  end
144
133
  serializer, deserializer = format
@@ -146,13 +135,6 @@ module Sequel
146
135
  define_serialized_attribute_accessor(serializer, deserializer, *columns)
147
136
  end
148
137
 
149
- # The columns that will be serialized. This is only for
150
- # backwards compatibility, use serialization_map in new code.
151
- def serialized_columns
152
- Sequel::Deprecation.deprecate("#{self}.serialized_columns in the serialization plugin", "Use #{self}.serialization_map.keys instead")
153
- serialization_map.keys
154
- end
155
-
156
138
  private
157
139
 
158
140
  # Add serializated attribute acessor methods to the serialization_module
@@ -198,14 +180,14 @@ module Sequel
198
180
  super
199
181
  end
200
182
 
201
- private
202
-
203
183
  # Serialize deserialized values before saving
204
- def _before_validation
184
+ def before_validation
205
185
  serialize_deserialized_values
206
186
  super
207
187
  end
208
188
 
189
+ private
190
+
209
191
  # Clear any cached deserialized values when doing a manual refresh.
210
192
  def _refresh_set_values(hash)
211
193
  @deserialized_values.clear if @deserialized_values
@@ -22,7 +22,7 @@ module Sequel
22
22
  # plugin :serialization, :json, :permissions
23
23
  # plugin :serialization_modification_detection
24
24
  # end
25
- # user = User.create(:permissions => {})
25
+ # user = User.create(permissions: {})
26
26
  # user.permissions[:global] = 'read-only'
27
27
  # user.save_changes
28
28
  module SerializationModificationDetection
@@ -5,10 +5,9 @@ module Sequel
5
5
  # The sharding plugin augments Sequel's default model sharding support
6
6
  # in the following ways:
7
7
  #
8
- # * It automatically sets model instances to be saved back to the
8
+ # * It automatically saves model instances back to the
9
9
  # shard they were retreived from.
10
- # * It makes model associations use the same shard as the model
11
- # object.
10
+ # * It makes model associations use the same shard as the model object.
12
11
  # * It adds a slightly nicer API for creating model instances on
13
12
  # specific shards.
14
13
  #
@@ -83,11 +82,6 @@ module Sequel
83
82
  nil
84
83
  end
85
84
 
86
- # Mark that associated objects should use the same server.
87
- def _associated_objects_use_same_server?
88
- true
89
- end
90
-
91
85
  # Ensure that the join table for many_to_many associations uses the correct shard.
92
86
  def _join_table_dataset(opts)
93
87
  use_server(super)
@@ -39,11 +39,11 @@ module Sequel
39
39
  # # Using integers to store the class type, with a :model_map hash
40
40
  # # and an sti_key of :type
41
41
  # Employee.plugin :single_table_inheritance, :type,
42
- # :model_map=>{1=>:Staff, 2=>:Manager}
42
+ # model_map: {1=>:Staff, 2=>:Manager}
43
43
  #
44
44
  # # Using non-class name strings
45
45
  # Employee.plugin :single_table_inheritance, :type,
46
- # :model_map=>{'line staff'=>:Staff, 'supervisor'=>:Manager}
46
+ # model_map: {'line staff'=>:Staff, 'supervisor'=>:Manager}
47
47
  #
48
48
  # # By default the plugin sets the respective column value
49
49
  # # when a new instance is created.
@@ -53,22 +53,22 @@ module Sequel
53
53
  # # You can customize this behavior with the :key_chooser option.
54
54
  # # This is most useful when using a non-bijective mapping.
55
55
  # Employee.plugin :single_table_inheritance, :type,
56
- # :model_map=>{'line staff'=>:Staff, 'supervisor'=>:Manager},
57
- # :key_chooser=>proc{|instance| instance.model.sti_key_map[instance.model.to_s].first || 'stranger' }
56
+ # model_map: {'line staff'=>:Staff, 'supervisor'=>:Manager},
57
+ # key_chooser: lambda{|instance| instance.model.sti_key_map[instance.model.to_s].first || 'stranger'}
58
58
  #
59
59
  # # Using custom procs, with :model_map taking column values
60
60
  # # and yielding either a class, string, symbol, or nil,
61
61
  # # and :key_map taking a class object and returning the column
62
62
  # # value to use
63
63
  # Employee.plugin :single_table_inheritance, :type,
64
- # :model_map=>proc(&:reverse),
65
- # :key_map=>proc{|klass| klass.name.reverse}
64
+ # model_map: :reverse.to_proc,
65
+ # key_map: lambda{|klass| klass.name.reverse}
66
66
  #
67
67
  # # You can use the same class for multiple values.
68
68
  # # This is mainly useful when the sti_key column contains multiple values
69
69
  # # which are different but do not require different code.
70
70
  # Employee.plugin :single_table_inheritance, :type,
71
- # :model_map=>{'staff' => "Staff",
71
+ # model_map: {'staff' => "Staff",
72
72
  # 'manager' => "Manager",
73
73
  # 'overpayed staff' => "Staff",
74
74
  # 'underpayed staff' => "Staff"}
@@ -80,7 +80,7 @@ module Sequel
80
80
  module SingleTableInheritance
81
81
  # Setup the necessary STI variables, see the module RDoc for SingleTableInheritance
82
82
  def self.configure(model, key, opts=OPTS)
83
- model.instance_eval do
83
+ model.instance_exec do
84
84
  @sti_key_array = nil
85
85
  @sti_key = key
86
86
  @sti_dataset = dataset
@@ -156,7 +156,6 @@ module Sequel
156
156
  # because of how STI works, you should not freeze an STI subclass
157
157
  # until after all subclasses of it have been created.
158
158
  def freeze
159
- @sti_dataset.freeze
160
159
  @sti_key_array.freeze if @sti_key_array
161
160
  @sti_key_map.freeze if @sti_key_map.is_a?(Hash)
162
161
  @sti_model_map.freeze if @sti_model_map.is_a?(Hash)
@@ -172,7 +171,7 @@ module Sequel
172
171
  sti_subclass_added(key)
173
172
  rp = dataset.row_proc
174
173
  subclass.set_dataset(sti_subclass_dataset(key), :inherited=>true)
175
- subclass.instance_eval do
174
+ subclass.instance_exec do
176
175
  @dataset = @dataset.with_row_proc(rp)
177
176
  @sti_key_array = key
178
177
  self.simple_table = nil
@@ -244,10 +243,8 @@ module Sequel
244
243
  end
245
244
 
246
245
  module InstanceMethods
247
- private
248
-
249
246
  # Set the sti_key column based on the sti_key_map.
250
- def _before_validation
247
+ def before_validation
251
248
  if new? && model.sti_key && !self[model.sti_key]
252
249
  set_column_value("#{model.sti_key}=", model.sti_key_chooser.call(self))
253
250
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Sequel
4
4
  module Plugins
5
- # SkipCreateRefresh is a simple plugin that make Sequel not
5
+ # The skip_create_refresh plugin skips the
6
6
  # refresh after saving a new model object. Sequel does the
7
- # refresh to make sure all columns are populated, which is
7
+ # refresh by default to make sure all columns are populated, which is
8
8
  # necessary so that database defaults work correctly.
9
9
  #
10
10
  # This plugin is mostly for performance reasons where you
@@ -12,7 +12,7 @@ module Sequel
12
12
  # but it could also help cases where records are not
13
13
  # immediately available for selection after insertion.
14
14
  #
15
- # Note that Sequel does not attempt to refresh records when
15
+ # Note that Sequel by default does not attempt to refresh records when
16
16
  # updating existing model objects, only when inserting new
17
17
  # model objects.
18
18
  #
@@ -10,12 +10,12 @@ module Sequel
10
10
  # are frozen so they won't be modified unexpectedly, and before hooks disallow
11
11
  # saving or destroying instances.
12
12
  #
13
- # You can use the :frozen=>false option to have this plugin return unfrozen
13
+ # You can use the frozen: false option to have this plugin return unfrozen
14
14
  # instances. This is slower as it requires creating new objects, but it allows
15
15
  # you to make changes to the object and save them. If you set the option to false,
16
16
  # you are responsible for updating the cache manually (the pg_static_cache_updater
17
17
  # extension can handle this automatically). Note that it is not safe to use the
18
- # :frozen=>false option if you are mutating column values directly. If you are
18
+ # frozen: false option if you are mutating column values directly. If you are
19
19
  # mutating column values, you should also override Model.call to dup each mutable
20
20
  # column value to ensure it is not shared by other instances.
21
21
  #
@@ -37,9 +37,9 @@ module Sequel
37
37
  #
38
38
  # # Cache the AlbumType class statically, but return unfrozen instances
39
39
  # # that can be modified.
40
- # AlbumType.plugin :static_cache, :frozen=>false
40
+ # AlbumType.plugin :static_cache, frozen: false
41
41
  #
42
- # If you would like the speed benefits of keeping :frozen=>true but still need
42
+ # If you would like the speed benefits of keeping frozen: true but still need
43
43
  # to occasionally update objects, you can side-step the before_ hooks by
44
44
  # overriding the class method +static_cache_allow_modifications?+ to return true:
45
45
  #
@@ -54,14 +54,13 @@ module Sequel
54
54
  # Now if you +#dup+ a Model object (the resulting object is not frozen), you
55
55
  # will be able to update and save the duplicate.
56
56
  # Note the caveats around your responsibility to update the cache still applies.
57
- #
58
57
  module StaticCache
59
58
  # Populate the static caches when loading the plugin. Options:
60
59
  # :frozen :: Whether retrieved model objects are frozen. The default is true,
61
60
  # for better performance as the shared frozen objects can be used
62
61
  # directly. If set to false, new instances are created.
63
62
  def self.configure(model, opts=OPTS)
64
- model.instance_eval do
63
+ model.instance_exec do
65
64
  @static_cache_frozen = opts.fetch(:frozen, true)
66
65
  load_cache
67
66
  end
@@ -216,7 +215,7 @@ module Sequel
216
215
  @cache = h.freeze
217
216
  end
218
217
 
219
- # If :frozen=>false is not used, just return the argument. Otherwise,
218
+ # If frozen: false is not used, just return the argument. Otherwise,
220
219
  # create a new instance with the arguments values if the argument is
221
220
  # not nil.
222
221
  def static_cache_object(o)
@@ -229,13 +228,13 @@ module Sequel
229
228
  end
230
229
 
231
230
  module InstanceMethods
232
- # Disallowing destroying the object unless the :frozen=>false option was used.
231
+ # Disallowing destroying the object unless the frozen: false option was used.
233
232
  def before_destroy
234
233
  cancel_action("modifying model objects that use the static_cache plugin is not allowed") unless model.static_cache_allow_modifications?
235
234
  super
236
235
  end
237
236
 
238
- # Disallowing saving the object unless the :frozen=>false option was used.
237
+ # Disallowing saving the object unless the frozen: false option was used.
239
238
  def before_save
240
239
  cancel_action("modifying model objects that use the static_cache plugin is not allowed") unless model.static_cache_allow_modifications?
241
240
  super
@@ -5,7 +5,7 @@ module Sequel
5
5
  # StringStripper is a plugin that strips all input strings
6
6
  # when assigning to the model's values. Example:
7
7
  #
8
- # album = Album.new(:name=>' A ')
8
+ # album = Album.new(name: ' A ')
9
9
  # album.name # => 'A'
10
10
  #
11
11
  # SQL::Blob instances and all non-strings are not modified by
@@ -14,7 +14,7 @@ module Sequel
14
14
  # other columns to skip the stripping:
15
15
  #
16
16
  # Album.skip_string_stripping :foo
17
- # Album.new(:foo=>' A ').foo # => ' A '
17
+ # Album.new(foo: ' A ').foo # => ' A '
18
18
  #
19
19
  # Usage:
20
20
  #
@@ -28,7 +28,7 @@ module Sequel
28
28
  model.plugin(:input_transformer, :string_stripper){|v| (v.is_a?(String) && !v.is_a?(SQL::Blob)) ? v.strip : v}
29
29
  end
30
30
  def self.configure(model)
31
- model.instance_eval{set_skipped_string_stripping_columns if @dataset}
31
+ model.instance_exec{set_skipped_string_stripping_columns if @dataset}
32
32
  end
33
33
 
34
34
  module ClassMethods
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Sequel
4
4
  module Plugins
5
- # The Subclasses plugin keeps track of all subclasses of the
5
+ # The subclasses plugin keeps track of all subclasses of the
6
6
  # current model class. Direct subclasses are available via the
7
7
  # subclasses method, and all descendent classes are available via the
8
8
  # descendents method:
@@ -14,7 +14,7 @@ module Sequel
14
14
  #
15
15
  # # This will now create a published_conditions method
16
16
  # Album.dataset_module do
17
- # subset :published, :published => true
17
+ # subset :published, published: true
18
18
  # end
19
19
  #
20
20
  # Album.where(Album.published_conditions).sql
@@ -23,7 +23,7 @@ module Sequel
23
23
  # Album.exclude(Album.published_conditions).sql
24
24
  # # SELECT * FROM albums WHERE (published IS NOT TRUE)
25
25
  #
26
- # Album.where(Sequel.|(Album.published_conditions, :ready=>true)).sql
26
+ # Album.where(Album.published_conditions | {ready: true}).sql
27
27
  # # SELECT * FROM albums WHERE ((published IS TRUE) OR (ready IS TRUE))
28
28
  module SubsetConditions
29
29
  def self.apply(mod, &block)
@@ -20,7 +20,7 @@ module Sequel
20
20
  # Modify the current model's dataset selection, if the model
21
21
  # has a dataset.
22
22
  def self.configure(model)
23
- model.instance_eval do
23
+ model.instance_exec do
24
24
  self.dataset = dataset if @dataset
25
25
  end
26
26
  end
@@ -32,7 +32,7 @@ module Sequel
32
32
  # has no explicit selection, select table.* from that table.
33
33
  def convert_input_dataset(ds)
34
34
  ds = super
35
- if !ds.opts[:select] && (from = ds.opts[:from]) && from.length == 1 && !ds.opts[:join] # SEQUEL5: Only !ds.opts[:select]
35
+ unless ds.opts[:select]
36
36
  ds = ds.select_all(ds.first_source)
37
37
  end
38
38
  ds
@@ -4,7 +4,7 @@ module Sequel
4
4
  module Plugins
5
5
  # The tactical_eager_loading plugin allows you to eagerly load
6
6
  # an association for all objects retrieved from the same dataset
7
- # without calling eager on the dataset. If you attempt to load
7
+ # without calling +eager+ on the dataset. If you attempt to load
8
8
  # associated objects for a record and the association for that
9
9
  # object is currently not cached, it assumes you want to get
10
10
  # the associated objects for all objects retrieved with the dataset that
@@ -40,7 +40,7 @@ module Sequel
40
40
  #
41
41
  # # Eagerly reload all artists for these albums
42
42
  # # SELECT * FROM artists WHERE id IN (...)
43
- # albums.first.artists(:eager_reload=>true)
43
+ # albums.first.artists(eager_reload: true)
44
44
  #
45
45
  # You can also use the :eager option to specify dependent associations
46
46
  # to eager load:
@@ -50,7 +50,7 @@ module Sequel
50
50
  # # Eager load all artists for these albums, and all albums for those artists
51
51
  # # SELECT * FROM artists WHERE id IN (...)
52
52
  # # SELECT * FROM albums WHERE artist_id IN (...)
53
- # albums.first.artists(:eager=>:albums)
53
+ # albums.first.artists(eager: :albums)
54
54
  #
55
55
  # You can also use :eager to specify an eager callback. For example:
56
56
  #
@@ -58,7 +58,7 @@ module Sequel
58
58
  #
59
59
  # # Eagerly load all artists whose name starts with A-M for these albums
60
60
  # # SELECT * FROM artists WHERE name > 'N' AND id IN (...)
61
- # albums.first.artists(:eager=>proc{|ds| ds.where(:name > 'N')})
61
+ # albums.first.artists(eager: lambda{|ds| ds.where(Sequel[:name] > 'N')})
62
62
  #
63
63
  # Usage:
64
64
  #
@@ -15,11 +15,11 @@ module Sequel
15
15
  # Sequel::Model.plugin :timestamps
16
16
  #
17
17
  # # Timestamp Album instances, with custom column names
18
- # Album.plugin :timestamps, :create=>:created_on, :update=>:updated_on
18
+ # Album.plugin :timestamps, create: :created_on, update: :updated_on
19
19
  #
20
20
  # # Timestamp Artist instances, forcing an overwrite of the create
21
21
  # # timestamp, and setting the update timestamp when creating
22
- # Album.plugin :timestamps, :force=>true, :update_on_create=>true
22
+ # Album.plugin :timestamps, force: true, update_on_create: true
23
23
  module Timestamps
24
24
  # Configure the plugin by setting the available options. Note that
25
25
  # if this method is run more than once, previous settings are ignored,
@@ -30,7 +30,7 @@ module Sequel
30
30
  # :update :: The field to hold the update timestamp (default: :updated_at)
31
31
  # :update_on_create :: Whether to set the update timestamp to the create timestamp when creating (default: false)
32
32
  def self.configure(model, opts=OPTS)
33
- model.instance_eval do
33
+ model.instance_exec do
34
34
  @allow_manual_timestamp_update = opts[:allow_manual_update]||false
35
35
  @create_timestamp_field = opts[:create]||:created_at
36
36
  @update_timestamp_field = opts[:update]||:updated_at
@@ -58,7 +58,6 @@ module Sequel
58
58
  :@set_update_timestamp_on_create=>nil,
59
59
  :@update_timestamp_field=>nil)
60
60
 
61
-
62
61
  # Whether to allow manual setting of the update timestamp when creating
63
62
  def allow_manual_timestamp_update?
64
63
  @allow_manual_timestamp_update
@@ -77,14 +76,14 @@ module Sequel
77
76
  super
78
77
  end
79
78
 
80
- private
81
-
82
79
  # Set the create timestamp when creating
83
- def _before_validation
80
+ def before_validation
84
81
  set_create_timestamp if new?
85
82
  super
86
83
  end
87
84
 
85
+ private
86
+
88
87
  # If the object has accessor methods for the create timestamp field, and
89
88
  # the create timestamp value is nil or overwriting it is allowed, set the
90
89
  # create timestamp field to the time given or the current time. If setting