sequel 4.36.0 → 5.61.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.
- checksums.yaml +5 -5
- data/CHANGELOG +548 -5749
- data/MIT-LICENSE +1 -1
- data/README.rdoc +265 -159
- data/bin/sequel +34 -12
- data/doc/advanced_associations.rdoc +228 -187
- data/doc/association_basics.rdoc +281 -291
- data/doc/bin_sequel.rdoc +5 -3
- data/doc/cheat_sheet.rdoc +86 -51
- data/doc/code_order.rdoc +25 -19
- data/doc/core_extensions.rdoc +104 -63
- data/doc/dataset_basics.rdoc +12 -21
- data/doc/dataset_filtering.rdoc +99 -86
- data/doc/extensions.rdoc +3 -10
- data/doc/fork_safety.rdoc +84 -0
- data/doc/mass_assignment.rdoc +74 -31
- data/doc/migration.rdoc +59 -51
- data/doc/model_dataset_method_design.rdoc +129 -0
- data/doc/model_hooks.rdoc +15 -25
- data/doc/model_plugins.rdoc +12 -12
- data/doc/mssql_stored_procedures.rdoc +3 -3
- data/doc/object_model.rdoc +58 -68
- data/doc/opening_databases.rdoc +85 -95
- data/doc/postgresql.rdoc +263 -38
- data/doc/prepared_statements.rdoc +29 -24
- data/doc/querying.rdoc +189 -167
- data/doc/reflection.rdoc +5 -6
- data/doc/release_notes/5.0.0.txt +159 -0
- data/doc/release_notes/5.1.0.txt +31 -0
- data/doc/release_notes/5.10.0.txt +84 -0
- data/doc/release_notes/5.11.0.txt +83 -0
- data/doc/release_notes/5.12.0.txt +141 -0
- data/doc/release_notes/5.13.0.txt +27 -0
- data/doc/release_notes/5.14.0.txt +63 -0
- data/doc/release_notes/5.15.0.txt +39 -0
- data/doc/release_notes/5.16.0.txt +110 -0
- data/doc/release_notes/5.17.0.txt +31 -0
- data/doc/release_notes/5.18.0.txt +69 -0
- data/doc/release_notes/5.19.0.txt +28 -0
- data/doc/release_notes/5.2.0.txt +33 -0
- data/doc/release_notes/5.20.0.txt +89 -0
- data/doc/release_notes/5.21.0.txt +87 -0
- data/doc/release_notes/5.22.0.txt +48 -0
- data/doc/release_notes/5.23.0.txt +56 -0
- data/doc/release_notes/5.24.0.txt +56 -0
- data/doc/release_notes/5.25.0.txt +32 -0
- data/doc/release_notes/5.26.0.txt +35 -0
- data/doc/release_notes/5.27.0.txt +21 -0
- data/doc/release_notes/5.28.0.txt +16 -0
- data/doc/release_notes/5.29.0.txt +22 -0
- data/doc/release_notes/5.3.0.txt +121 -0
- data/doc/release_notes/5.30.0.txt +20 -0
- data/doc/release_notes/5.31.0.txt +148 -0
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/release_notes/5.33.0.txt +24 -0
- data/doc/release_notes/5.34.0.txt +40 -0
- data/doc/release_notes/5.35.0.txt +56 -0
- data/doc/release_notes/5.36.0.txt +60 -0
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.4.0.txt +80 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/release_notes/5.42.0.txt +136 -0
- data/doc/release_notes/5.43.0.txt +98 -0
- data/doc/release_notes/5.44.0.txt +32 -0
- data/doc/release_notes/5.45.0.txt +34 -0
- data/doc/release_notes/5.46.0.txt +87 -0
- data/doc/release_notes/5.47.0.txt +59 -0
- data/doc/release_notes/5.48.0.txt +14 -0
- data/doc/release_notes/5.49.0.txt +59 -0
- data/doc/release_notes/5.5.0.txt +61 -0
- data/doc/release_notes/5.50.0.txt +78 -0
- data/doc/release_notes/5.51.0.txt +47 -0
- data/doc/release_notes/5.52.0.txt +87 -0
- data/doc/release_notes/5.53.0.txt +23 -0
- data/doc/release_notes/5.54.0.txt +27 -0
- data/doc/release_notes/5.55.0.txt +21 -0
- data/doc/release_notes/5.56.0.txt +51 -0
- data/doc/release_notes/5.57.0.txt +23 -0
- data/doc/release_notes/5.58.0.txt +31 -0
- data/doc/release_notes/5.59.0.txt +73 -0
- data/doc/release_notes/5.6.0.txt +31 -0
- data/doc/release_notes/5.60.0.txt +22 -0
- data/doc/release_notes/5.61.0.txt +43 -0
- data/doc/release_notes/5.7.0.txt +108 -0
- data/doc/release_notes/5.8.0.txt +170 -0
- data/doc/release_notes/5.9.0.txt +99 -0
- data/doc/schema_modification.rdoc +95 -75
- data/doc/security.rdoc +109 -80
- data/doc/sharding.rdoc +74 -47
- data/doc/sql.rdoc +147 -122
- data/doc/testing.rdoc +43 -20
- data/doc/thread_safety.rdoc +2 -4
- data/doc/transactions.rdoc +97 -18
- data/doc/validations.rdoc +52 -50
- data/doc/virtual_rows.rdoc +90 -109
- data/lib/sequel/adapters/ado/access.rb +15 -17
- data/lib/sequel/adapters/ado/mssql.rb +6 -15
- data/lib/sequel/adapters/ado.rb +150 -20
- data/lib/sequel/adapters/amalgalite.rb +11 -23
- data/lib/sequel/adapters/ibmdb.rb +47 -55
- data/lib/sequel/adapters/jdbc/db2.rb +29 -39
- data/lib/sequel/adapters/jdbc/derby.rb +58 -54
- data/lib/sequel/adapters/jdbc/h2.rb +93 -35
- data/lib/sequel/adapters/jdbc/hsqldb.rb +24 -31
- data/lib/sequel/adapters/jdbc/jtds.rb +2 -10
- data/lib/sequel/adapters/jdbc/mssql.rb +3 -11
- data/lib/sequel/adapters/jdbc/mysql.rb +17 -20
- data/lib/sequel/adapters/jdbc/oracle.rb +22 -18
- data/lib/sequel/adapters/jdbc/postgresql.rb +69 -71
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +11 -23
- data/lib/sequel/adapters/jdbc/sqlite.rb +47 -11
- data/lib/sequel/adapters/jdbc/sqlserver.rb +34 -9
- data/lib/sequel/adapters/jdbc/transactions.rb +22 -38
- data/lib/sequel/adapters/jdbc.rb +145 -130
- data/lib/sequel/adapters/mock.rb +100 -111
- data/lib/sequel/adapters/mysql.rb +114 -122
- data/lib/sequel/adapters/mysql2.rb +147 -63
- data/lib/sequel/adapters/odbc/db2.rb +1 -1
- data/lib/sequel/adapters/odbc/mssql.rb +8 -14
- data/lib/sequel/adapters/odbc/oracle.rb +11 -0
- data/lib/sequel/adapters/odbc.rb +20 -25
- data/lib/sequel/adapters/oracle.rb +50 -56
- data/lib/sequel/adapters/postgres.rb +305 -327
- data/lib/sequel/adapters/postgresql.rb +1 -1
- data/lib/sequel/adapters/shared/access.rb +74 -78
- data/lib/sequel/adapters/shared/db2.rb +118 -71
- data/lib/sequel/adapters/shared/mssql.rb +301 -220
- data/lib/sequel/adapters/shared/mysql.rb +299 -217
- data/lib/sequel/adapters/shared/oracle.rb +226 -65
- data/lib/sequel/adapters/shared/postgres.rb +935 -395
- data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -126
- data/lib/sequel/adapters/shared/sqlite.rb +447 -173
- data/lib/sequel/adapters/sqlanywhere.rb +48 -35
- data/lib/sequel/adapters/sqlite.rb +156 -111
- data/lib/sequel/adapters/tinytds.rb +30 -38
- data/lib/sequel/adapters/utils/columns_limit_1.rb +22 -0
- data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +3 -6
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +2 -2
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
- data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
- data/lib/sequel/adapters/utils/replace.rb +1 -4
- data/lib/sequel/adapters/utils/stored_procedures.rb +7 -22
- data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
- data/lib/sequel/ast_transformer.rb +17 -89
- data/lib/sequel/connection_pool/sharded_single.rb +18 -15
- data/lib/sequel/connection_pool/sharded_threaded.rb +130 -111
- data/lib/sequel/connection_pool/single.rb +18 -13
- data/lib/sequel/connection_pool/threaded.rb +121 -120
- data/lib/sequel/connection_pool.rb +48 -29
- data/lib/sequel/core.rb +351 -301
- data/lib/sequel/database/connecting.rb +69 -57
- data/lib/sequel/database/dataset.rb +13 -5
- data/lib/sequel/database/dataset_defaults.rb +18 -102
- data/lib/sequel/database/features.rb +18 -4
- data/lib/sequel/database/logging.rb +12 -11
- data/lib/sequel/database/misc.rb +180 -122
- data/lib/sequel/database/query.rb +47 -27
- data/lib/sequel/database/schema_generator.rb +178 -84
- data/lib/sequel/database/schema_methods.rb +172 -97
- data/lib/sequel/database/transactions.rb +205 -44
- data/lib/sequel/database.rb +17 -2
- data/lib/sequel/dataset/actions.rb +339 -155
- data/lib/sequel/dataset/dataset_module.rb +46 -0
- data/lib/sequel/dataset/features.rb +90 -35
- data/lib/sequel/dataset/graph.rb +80 -58
- data/lib/sequel/dataset/misc.rb +137 -47
- data/lib/sequel/dataset/placeholder_literalizer.rb +63 -25
- data/lib/sequel/dataset/prepared_statements.rb +188 -85
- data/lib/sequel/dataset/query.rb +530 -222
- data/lib/sequel/dataset/sql.rb +590 -368
- data/lib/sequel/dataset.rb +26 -16
- data/lib/sequel/deprecated.rb +12 -2
- data/lib/sequel/exceptions.rb +46 -16
- data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
- data/lib/sequel/extensions/_model_pg_row.rb +43 -0
- data/lib/sequel/extensions/_pretty_table.rb +2 -5
- data/lib/sequel/extensions/any_not_empty.rb +45 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
- data/lib/sequel/extensions/async_thread_pool.rb +438 -0
- data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/caller_logging.rb +79 -0
- data/lib/sequel/extensions/columns_introspection.rb +4 -3
- data/lib/sequel/extensions/connection_expiration.rb +20 -10
- data/lib/sequel/extensions/connection_validator.rb +11 -10
- data/lib/sequel/extensions/constant_sql_override.rb +65 -0
- data/lib/sequel/extensions/constraint_validations.rb +62 -39
- data/lib/sequel/extensions/core_extensions.rb +42 -48
- data/lib/sequel/extensions/core_refinements.rb +80 -59
- data/lib/sequel/extensions/current_datetime_timestamp.rb +1 -4
- data/lib/sequel/extensions/date_arithmetic.rb +98 -39
- data/lib/sequel/extensions/date_parse_input_handler.rb +67 -0
- data/lib/sequel/extensions/datetime_parse_to_time.rb +41 -0
- data/lib/sequel/extensions/duplicate_columns_handler.rb +21 -14
- data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
- data/lib/sequel/extensions/escaped_like.rb +100 -0
- data/lib/sequel/extensions/eval_inspect.rb +12 -15
- data/lib/sequel/extensions/exclude_or_null.rb +68 -0
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/freeze_datasets.rb +3 -0
- data/lib/sequel/extensions/from_block.rb +1 -34
- data/lib/sequel/extensions/graph_each.rb +4 -4
- data/lib/sequel/extensions/identifier_mangling.rb +180 -0
- data/lib/sequel/extensions/implicit_subquery.rb +48 -0
- data/lib/sequel/extensions/index_caching.rb +109 -0
- data/lib/sequel/extensions/inflector.rb +13 -5
- data/lib/sequel/extensions/integer64.rb +32 -0
- data/lib/sequel/extensions/is_distinct_from.rb +141 -0
- data/lib/sequel/extensions/looser_typecasting.rb +17 -8
- data/lib/sequel/extensions/migration.rb +119 -78
- data/lib/sequel/extensions/named_timezones.rb +88 -23
- data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -82
- data/lib/sequel/extensions/null_dataset.rb +8 -8
- data/lib/sequel/extensions/pagination.rb +32 -29
- data/lib/sequel/extensions/pg_array.rb +221 -287
- data/lib/sequel/extensions/pg_array_ops.rb +17 -9
- data/lib/sequel/extensions/pg_enum.rb +63 -23
- data/lib/sequel/extensions/pg_extended_date_support.rb +241 -0
- data/lib/sequel/extensions/pg_hstore.rb +45 -54
- data/lib/sequel/extensions/pg_hstore_ops.rb +58 -6
- data/lib/sequel/extensions/pg_inet.rb +31 -12
- data/lib/sequel/extensions/pg_inet_ops.rb +2 -2
- data/lib/sequel/extensions/pg_interval.rb +56 -29
- data/lib/sequel/extensions/pg_json.rb +417 -140
- data/lib/sequel/extensions/pg_json_ops.rb +270 -18
- data/lib/sequel/extensions/pg_loose_count.rb +4 -2
- data/lib/sequel/extensions/pg_multirange.rb +372 -0
- data/lib/sequel/extensions/pg_range.rb +131 -191
- data/lib/sequel/extensions/pg_range_ops.rb +42 -13
- data/lib/sequel/extensions/pg_row.rb +48 -81
- data/lib/sequel/extensions/pg_row_ops.rb +33 -14
- data/lib/sequel/extensions/pg_static_cache_updater.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
- data/lib/sequel/extensions/query.rb +9 -7
- data/lib/sequel/extensions/round_timestamps.rb +0 -6
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/s.rb +60 -0
- data/lib/sequel/extensions/schema_caching.rb +10 -1
- data/lib/sequel/extensions/schema_dumper.rb +71 -48
- data/lib/sequel/extensions/select_remove.rb +4 -4
- data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
- data/lib/sequel/extensions/server_block.rb +51 -27
- data/lib/sequel/extensions/split_array_nil.rb +4 -4
- data/lib/sequel/extensions/sql_comments.rb +119 -7
- data/lib/sequel/extensions/sql_expr.rb +2 -1
- data/lib/sequel/extensions/sql_log_normalizer.rb +108 -0
- data/lib/sequel/extensions/sqlite_json_ops.rb +255 -0
- data/lib/sequel/extensions/string_agg.rb +11 -8
- data/lib/sequel/extensions/string_date_time.rb +19 -23
- data/lib/sequel/extensions/symbol_aref.rb +55 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
- data/lib/sequel/extensions/synchronize_sql.rb +45 -0
- data/lib/sequel/extensions/to_dot.rb +10 -4
- data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
- data/lib/sequel/model/associations.rb +1006 -284
- data/lib/sequel/model/base.rb +560 -805
- data/lib/sequel/model/dataset_module.rb +11 -10
- data/lib/sequel/model/default_inflections.rb +1 -1
- data/lib/sequel/model/errors.rb +10 -3
- data/lib/sequel/model/exceptions.rb +8 -10
- data/lib/sequel/model/inflections.rb +7 -20
- data/lib/sequel/model/plugins.rb +114 -0
- data/lib/sequel/model.rb +32 -82
- data/lib/sequel/plugins/active_model.rb +30 -14
- data/lib/sequel/plugins/after_initialize.rb +1 -1
- data/lib/sequel/plugins/association_dependencies.rb +25 -18
- data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
- data/lib/sequel/plugins/association_pks.rb +147 -70
- data/lib/sequel/plugins/association_proxies.rb +33 -9
- data/lib/sequel/plugins/async_thread_pool.rb +39 -0
- data/lib/sequel/plugins/auto_restrict_eager_graph.rb +62 -0
- data/lib/sequel/plugins/auto_validations.rb +95 -28
- data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
- data/lib/sequel/plugins/before_after_save.rb +0 -42
- data/lib/sequel/plugins/blacklist_security.rb +21 -12
- data/lib/sequel/plugins/boolean_readers.rb +5 -5
- data/lib/sequel/plugins/boolean_subsets.rb +13 -8
- data/lib/sequel/plugins/caching.rb +25 -16
- data/lib/sequel/plugins/class_table_inheritance.rb +179 -100
- data/lib/sequel/plugins/column_conflicts.rb +16 -3
- data/lib/sequel/plugins/column_encryption.rb +728 -0
- data/lib/sequel/plugins/column_select.rb +7 -5
- data/lib/sequel/plugins/columns_updated.rb +42 -0
- data/lib/sequel/plugins/composition.rb +42 -26
- data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
- data/lib/sequel/plugins/constraint_validations.rb +20 -14
- data/lib/sequel/plugins/csv_serializer.rb +56 -35
- data/lib/sequel/plugins/dataset_associations.rb +40 -17
- data/lib/sequel/plugins/def_dataset_method.rb +90 -0
- data/lib/sequel/plugins/defaults_setter.rb +65 -10
- data/lib/sequel/plugins/delay_add_association.rb +1 -1
- data/lib/sequel/plugins/dirty.rb +62 -24
- data/lib/sequel/plugins/eager_each.rb +3 -3
- data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/enum.rb +124 -0
- data/lib/sequel/plugins/error_splitter.rb +17 -12
- data/lib/sequel/plugins/finder.rb +246 -0
- data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
- data/lib/sequel/plugins/force_encoding.rb +7 -12
- data/lib/sequel/plugins/hook_class_methods.rb +37 -54
- data/lib/sequel/plugins/input_transformer.rb +18 -10
- data/lib/sequel/plugins/insert_conflict.rb +76 -0
- data/lib/sequel/plugins/insert_returning_select.rb +2 -2
- data/lib/sequel/plugins/instance_filters.rb +10 -8
- data/lib/sequel/plugins/instance_hooks.rb +34 -17
- data/lib/sequel/plugins/instance_specific_default.rb +113 -0
- data/lib/sequel/plugins/inverted_subsets.rb +22 -13
- data/lib/sequel/plugins/json_serializer.rb +124 -64
- data/lib/sequel/plugins/lazy_attributes.rb +21 -14
- data/lib/sequel/plugins/list.rb +35 -21
- data/lib/sequel/plugins/many_through_many.rb +134 -21
- data/lib/sequel/plugins/modification_detection.rb +15 -5
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +6 -5
- data/lib/sequel/plugins/nested_attributes.rb +61 -31
- data/lib/sequel/plugins/optimistic_locking.rb +3 -3
- data/lib/sequel/plugins/pg_array_associations.rb +103 -53
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +350 -0
- data/lib/sequel/plugins/pg_row.rb +5 -51
- data/lib/sequel/plugins/prepared_statements.rb +60 -72
- data/lib/sequel/plugins/prepared_statements_safe.rb +9 -4
- data/lib/sequel/plugins/rcte_tree.rb +68 -82
- data/lib/sequel/plugins/require_valid_schema.rb +67 -0
- data/lib/sequel/plugins/serialization.rb +43 -46
- data/lib/sequel/plugins/serialization_modification_detection.rb +3 -2
- data/lib/sequel/plugins/sharding.rb +15 -10
- data/lib/sequel/plugins/single_table_inheritance.rb +67 -28
- data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
- data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
- data/lib/sequel/plugins/split_values.rb +11 -6
- data/lib/sequel/plugins/sql_comments.rb +189 -0
- data/lib/sequel/plugins/static_cache.rb +77 -53
- data/lib/sequel/plugins/static_cache_cache.rb +53 -0
- data/lib/sequel/plugins/string_stripper.rb +3 -3
- data/lib/sequel/plugins/subclasses.rb +43 -10
- data/lib/sequel/plugins/subset_conditions.rb +15 -5
- data/lib/sequel/plugins/table_select.rb +2 -2
- data/lib/sequel/plugins/tactical_eager_loading.rb +96 -12
- data/lib/sequel/plugins/throw_failures.rb +110 -0
- data/lib/sequel/plugins/timestamps.rb +20 -8
- data/lib/sequel/plugins/touch.rb +19 -8
- data/lib/sequel/plugins/tree.rb +62 -32
- data/lib/sequel/plugins/typecast_on_load.rb +12 -4
- data/lib/sequel/plugins/unlimited_update.rb +1 -7
- data/lib/sequel/plugins/unused_associations.rb +521 -0
- data/lib/sequel/plugins/update_or_create.rb +4 -4
- data/lib/sequel/plugins/update_primary_key.rb +1 -1
- data/lib/sequel/plugins/update_refresh.rb +26 -15
- data/lib/sequel/plugins/uuid.rb +7 -11
- data/lib/sequel/plugins/validate_associated.rb +18 -0
- data/lib/sequel/plugins/validation_class_methods.rb +38 -19
- data/lib/sequel/plugins/validation_contexts.rb +49 -0
- data/lib/sequel/plugins/validation_helpers.rb +57 -41
- data/lib/sequel/plugins/whitelist_security.rb +122 -0
- data/lib/sequel/plugins/xml_serializer.rb +30 -31
- data/lib/sequel/sql.rb +471 -331
- data/lib/sequel/timezones.rb +78 -47
- data/lib/sequel/version.rb +7 -2
- data/lib/sequel.rb +1 -1
- metadata +217 -521
- data/Rakefile +0 -164
- data/doc/active_record.rdoc +0 -928
- data/doc/release_notes/1.0.txt +0 -38
- data/doc/release_notes/1.1.txt +0 -143
- data/doc/release_notes/1.3.txt +0 -101
- data/doc/release_notes/1.4.0.txt +0 -53
- data/doc/release_notes/1.5.0.txt +0 -155
- data/doc/release_notes/2.0.0.txt +0 -298
- data/doc/release_notes/2.1.0.txt +0 -271
- data/doc/release_notes/2.10.0.txt +0 -328
- data/doc/release_notes/2.11.0.txt +0 -215
- data/doc/release_notes/2.12.0.txt +0 -534
- data/doc/release_notes/2.2.0.txt +0 -253
- data/doc/release_notes/2.3.0.txt +0 -88
- data/doc/release_notes/2.4.0.txt +0 -106
- data/doc/release_notes/2.5.0.txt +0 -137
- data/doc/release_notes/2.6.0.txt +0 -157
- data/doc/release_notes/2.7.0.txt +0 -166
- data/doc/release_notes/2.8.0.txt +0 -171
- data/doc/release_notes/2.9.0.txt +0 -97
- data/doc/release_notes/3.0.0.txt +0 -221
- data/doc/release_notes/3.1.0.txt +0 -406
- data/doc/release_notes/3.10.0.txt +0 -286
- data/doc/release_notes/3.11.0.txt +0 -254
- data/doc/release_notes/3.12.0.txt +0 -304
- data/doc/release_notes/3.13.0.txt +0 -210
- data/doc/release_notes/3.14.0.txt +0 -118
- data/doc/release_notes/3.15.0.txt +0 -78
- data/doc/release_notes/3.16.0.txt +0 -45
- data/doc/release_notes/3.17.0.txt +0 -58
- data/doc/release_notes/3.18.0.txt +0 -120
- data/doc/release_notes/3.19.0.txt +0 -67
- data/doc/release_notes/3.2.0.txt +0 -268
- data/doc/release_notes/3.20.0.txt +0 -41
- data/doc/release_notes/3.21.0.txt +0 -87
- data/doc/release_notes/3.22.0.txt +0 -39
- data/doc/release_notes/3.23.0.txt +0 -172
- data/doc/release_notes/3.24.0.txt +0 -420
- data/doc/release_notes/3.25.0.txt +0 -88
- data/doc/release_notes/3.26.0.txt +0 -88
- data/doc/release_notes/3.27.0.txt +0 -82
- data/doc/release_notes/3.28.0.txt +0 -304
- data/doc/release_notes/3.29.0.txt +0 -459
- data/doc/release_notes/3.3.0.txt +0 -192
- data/doc/release_notes/3.30.0.txt +0 -135
- data/doc/release_notes/3.31.0.txt +0 -146
- data/doc/release_notes/3.32.0.txt +0 -202
- data/doc/release_notes/3.33.0.txt +0 -157
- data/doc/release_notes/3.34.0.txt +0 -671
- data/doc/release_notes/3.35.0.txt +0 -144
- data/doc/release_notes/3.36.0.txt +0 -245
- data/doc/release_notes/3.37.0.txt +0 -338
- data/doc/release_notes/3.38.0.txt +0 -234
- data/doc/release_notes/3.39.0.txt +0 -237
- data/doc/release_notes/3.4.0.txt +0 -325
- data/doc/release_notes/3.40.0.txt +0 -73
- data/doc/release_notes/3.41.0.txt +0 -155
- data/doc/release_notes/3.42.0.txt +0 -74
- data/doc/release_notes/3.43.0.txt +0 -105
- data/doc/release_notes/3.44.0.txt +0 -152
- data/doc/release_notes/3.45.0.txt +0 -179
- data/doc/release_notes/3.46.0.txt +0 -122
- data/doc/release_notes/3.47.0.txt +0 -270
- data/doc/release_notes/3.48.0.txt +0 -477
- data/doc/release_notes/3.5.0.txt +0 -510
- data/doc/release_notes/3.6.0.txt +0 -366
- data/doc/release_notes/3.7.0.txt +0 -179
- data/doc/release_notes/3.8.0.txt +0 -151
- data/doc/release_notes/3.9.0.txt +0 -233
- data/doc/release_notes/4.0.0.txt +0 -262
- data/doc/release_notes/4.1.0.txt +0 -85
- data/doc/release_notes/4.10.0.txt +0 -226
- data/doc/release_notes/4.11.0.txt +0 -147
- data/doc/release_notes/4.12.0.txt +0 -105
- data/doc/release_notes/4.13.0.txt +0 -169
- data/doc/release_notes/4.14.0.txt +0 -68
- data/doc/release_notes/4.15.0.txt +0 -56
- data/doc/release_notes/4.16.0.txt +0 -36
- data/doc/release_notes/4.17.0.txt +0 -38
- data/doc/release_notes/4.18.0.txt +0 -36
- data/doc/release_notes/4.19.0.txt +0 -45
- data/doc/release_notes/4.2.0.txt +0 -129
- data/doc/release_notes/4.20.0.txt +0 -79
- data/doc/release_notes/4.21.0.txt +0 -94
- data/doc/release_notes/4.22.0.txt +0 -72
- data/doc/release_notes/4.23.0.txt +0 -65
- data/doc/release_notes/4.24.0.txt +0 -99
- data/doc/release_notes/4.25.0.txt +0 -181
- data/doc/release_notes/4.26.0.txt +0 -44
- data/doc/release_notes/4.27.0.txt +0 -78
- data/doc/release_notes/4.28.0.txt +0 -57
- data/doc/release_notes/4.29.0.txt +0 -41
- data/doc/release_notes/4.3.0.txt +0 -40
- data/doc/release_notes/4.30.0.txt +0 -37
- data/doc/release_notes/4.31.0.txt +0 -57
- data/doc/release_notes/4.32.0.txt +0 -132
- data/doc/release_notes/4.33.0.txt +0 -88
- data/doc/release_notes/4.34.0.txt +0 -86
- data/doc/release_notes/4.35.0.txt +0 -130
- data/doc/release_notes/4.36.0.txt +0 -116
- data/doc/release_notes/4.4.0.txt +0 -92
- data/doc/release_notes/4.5.0.txt +0 -34
- data/doc/release_notes/4.6.0.txt +0 -30
- data/doc/release_notes/4.7.0.txt +0 -103
- data/doc/release_notes/4.8.0.txt +0 -175
- data/doc/release_notes/4.9.0.txt +0 -190
- data/lib/sequel/adapters/cubrid.rb +0 -144
- data/lib/sequel/adapters/do/mysql.rb +0 -66
- data/lib/sequel/adapters/do/postgres.rb +0 -44
- data/lib/sequel/adapters/do/sqlite3.rb +0 -42
- data/lib/sequel/adapters/do.rb +0 -158
- data/lib/sequel/adapters/jdbc/as400.rb +0 -84
- data/lib/sequel/adapters/jdbc/cubrid.rb +0 -64
- data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -36
- data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -33
- data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -33
- data/lib/sequel/adapters/odbc/progress.rb +0 -10
- data/lib/sequel/adapters/shared/cubrid.rb +0 -245
- data/lib/sequel/adapters/shared/firebird.rb +0 -247
- data/lib/sequel/adapters/shared/informix.rb +0 -54
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -152
- data/lib/sequel/adapters/shared/progress.rb +0 -40
- data/lib/sequel/adapters/swift/mysql.rb +0 -49
- data/lib/sequel/adapters/swift/postgres.rb +0 -47
- data/lib/sequel/adapters/swift/sqlite.rb +0 -49
- data/lib/sequel/adapters/swift.rb +0 -160
- data/lib/sequel/adapters/utils/pg_types.rb +0 -70
- data/lib/sequel/dataset/mutation.rb +0 -111
- data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -5
- data/lib/sequel/extensions/filter_having.rb +0 -63
- data/lib/sequel/extensions/hash_aliases.rb +0 -49
- data/lib/sequel/extensions/meta_def.rb +0 -35
- data/lib/sequel/extensions/query_literals.rb +0 -84
- data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -24
- data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -122
- data/lib/sequel/extensions/set_overrides.rb +0 -76
- data/lib/sequel/no_core_ext.rb +0 -3
- data/lib/sequel/plugins/association_autoreloading.rb +0 -9
- data/lib/sequel/plugins/identifier_columns.rb +0 -47
- data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -9
- data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -81
- data/lib/sequel/plugins/prepared_statements_associations.rb +0 -119
- data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -61
- data/lib/sequel/plugins/schema.rb +0 -82
- data/lib/sequel/plugins/scissors.rb +0 -35
- data/spec/adapter_spec.rb +0 -4
- data/spec/adapters/db2_spec.rb +0 -160
- data/spec/adapters/firebird_spec.rb +0 -411
- data/spec/adapters/informix_spec.rb +0 -100
- data/spec/adapters/mssql_spec.rb +0 -733
- data/spec/adapters/mysql_spec.rb +0 -1319
- data/spec/adapters/oracle_spec.rb +0 -313
- data/spec/adapters/postgres_spec.rb +0 -3790
- data/spec/adapters/spec_helper.rb +0 -49
- data/spec/adapters/sqlanywhere_spec.rb +0 -170
- data/spec/adapters/sqlite_spec.rb +0 -688
- data/spec/bin_spec.rb +0 -258
- data/spec/core/connection_pool_spec.rb +0 -1045
- data/spec/core/database_spec.rb +0 -2636
- data/spec/core/dataset_spec.rb +0 -5175
- data/spec/core/deprecated_spec.rb +0 -70
- data/spec/core/expression_filters_spec.rb +0 -1247
- data/spec/core/mock_adapter_spec.rb +0 -464
- data/spec/core/object_graph_spec.rb +0 -303
- data/spec/core/placeholder_literalizer_spec.rb +0 -163
- data/spec/core/schema_generator_spec.rb +0 -203
- data/spec/core/schema_spec.rb +0 -1676
- data/spec/core/spec_helper.rb +0 -34
- data/spec/core/version_spec.rb +0 -7
- data/spec/core_extensions_spec.rb +0 -699
- data/spec/core_model_spec.rb +0 -2
- data/spec/core_spec.rb +0 -1
- data/spec/extensions/accessed_columns_spec.rb +0 -51
- data/spec/extensions/active_model_spec.rb +0 -85
- data/spec/extensions/after_initialize_spec.rb +0 -24
- data/spec/extensions/arbitrary_servers_spec.rb +0 -109
- data/spec/extensions/association_dependencies_spec.rb +0 -117
- data/spec/extensions/association_pks_spec.rb +0 -405
- data/spec/extensions/association_proxies_spec.rb +0 -86
- data/spec/extensions/auto_validations_spec.rb +0 -192
- data/spec/extensions/before_after_save_spec.rb +0 -40
- data/spec/extensions/blacklist_security_spec.rb +0 -88
- data/spec/extensions/blank_spec.rb +0 -69
- data/spec/extensions/boolean_readers_spec.rb +0 -93
- data/spec/extensions/boolean_subsets_spec.rb +0 -47
- data/spec/extensions/caching_spec.rb +0 -270
- data/spec/extensions/class_table_inheritance_spec.rb +0 -444
- data/spec/extensions/column_conflicts_spec.rb +0 -60
- data/spec/extensions/column_select_spec.rb +0 -108
- data/spec/extensions/columns_introspection_spec.rb +0 -91
- data/spec/extensions/composition_spec.rb +0 -242
- data/spec/extensions/connection_expiration_spec.rb +0 -121
- data/spec/extensions/connection_validator_spec.rb +0 -127
- data/spec/extensions/constraint_validations_plugin_spec.rb +0 -288
- data/spec/extensions/constraint_validations_spec.rb +0 -389
- data/spec/extensions/core_refinements_spec.rb +0 -519
- data/spec/extensions/csv_serializer_spec.rb +0 -180
- data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
- data/spec/extensions/dataset_associations_spec.rb +0 -343
- data/spec/extensions/dataset_source_alias_spec.rb +0 -51
- data/spec/extensions/date_arithmetic_spec.rb +0 -167
- data/spec/extensions/defaults_setter_spec.rb +0 -102
- data/spec/extensions/delay_add_association_spec.rb +0 -74
- data/spec/extensions/dirty_spec.rb +0 -180
- data/spec/extensions/duplicate_columns_handler_spec.rb +0 -110
- data/spec/extensions/eager_each_spec.rb +0 -66
- data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
- data/spec/extensions/error_splitter_spec.rb +0 -18
- data/spec/extensions/error_sql_spec.rb +0 -20
- data/spec/extensions/eval_inspect_spec.rb +0 -73
- data/spec/extensions/filter_having_spec.rb +0 -40
- data/spec/extensions/force_encoding_spec.rb +0 -114
- data/spec/extensions/from_block_spec.rb +0 -21
- data/spec/extensions/graph_each_spec.rb +0 -119
- data/spec/extensions/hash_aliases_spec.rb +0 -24
- data/spec/extensions/hook_class_methods_spec.rb +0 -429
- data/spec/extensions/identifier_columns_spec.rb +0 -17
- data/spec/extensions/inflector_spec.rb +0 -183
- data/spec/extensions/input_transformer_spec.rb +0 -54
- data/spec/extensions/insert_returning_select_spec.rb +0 -46
- data/spec/extensions/instance_filters_spec.rb +0 -79
- data/spec/extensions/instance_hooks_spec.rb +0 -276
- data/spec/extensions/inverted_subsets_spec.rb +0 -33
- data/spec/extensions/json_serializer_spec.rb +0 -304
- data/spec/extensions/lazy_attributes_spec.rb +0 -170
- data/spec/extensions/list_spec.rb +0 -278
- data/spec/extensions/looser_typecasting_spec.rb +0 -43
- data/spec/extensions/many_through_many_spec.rb +0 -2172
- data/spec/extensions/meta_def_spec.rb +0 -21
- data/spec/extensions/migration_spec.rb +0 -728
- data/spec/extensions/modification_detection_spec.rb +0 -80
- data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
- data/spec/extensions/named_timezones_spec.rb +0 -108
- data/spec/extensions/nested_attributes_spec.rb +0 -697
- data/spec/extensions/no_auto_literal_strings_spec.rb +0 -65
- data/spec/extensions/null_dataset_spec.rb +0 -85
- data/spec/extensions/optimistic_locking_spec.rb +0 -128
- data/spec/extensions/pagination_spec.rb +0 -118
- data/spec/extensions/pg_array_associations_spec.rb +0 -736
- data/spec/extensions/pg_array_ops_spec.rb +0 -143
- data/spec/extensions/pg_array_spec.rb +0 -390
- data/spec/extensions/pg_enum_spec.rb +0 -92
- data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
- data/spec/extensions/pg_hstore_spec.rb +0 -206
- data/spec/extensions/pg_inet_ops_spec.rb +0 -101
- data/spec/extensions/pg_inet_spec.rb +0 -52
- data/spec/extensions/pg_interval_spec.rb +0 -76
- data/spec/extensions/pg_json_ops_spec.rb +0 -275
- data/spec/extensions/pg_json_spec.rb +0 -218
- data/spec/extensions/pg_loose_count_spec.rb +0 -17
- data/spec/extensions/pg_range_ops_spec.rb +0 -58
- data/spec/extensions/pg_range_spec.rb +0 -473
- data/spec/extensions/pg_row_ops_spec.rb +0 -60
- data/spec/extensions/pg_row_plugin_spec.rb +0 -62
- data/spec/extensions/pg_row_spec.rb +0 -360
- data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
- data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
- data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
- data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
- data/spec/extensions/prepared_statements_spec.rb +0 -103
- data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
- data/spec/extensions/pretty_table_spec.rb +0 -92
- data/spec/extensions/query_literals_spec.rb +0 -183
- data/spec/extensions/query_spec.rb +0 -102
- data/spec/extensions/rcte_tree_spec.rb +0 -392
- data/spec/extensions/round_timestamps_spec.rb +0 -43
- data/spec/extensions/schema_caching_spec.rb +0 -41
- data/spec/extensions/schema_dumper_spec.rb +0 -814
- data/spec/extensions/schema_spec.rb +0 -117
- data/spec/extensions/scissors_spec.rb +0 -26
- data/spec/extensions/select_remove_spec.rb +0 -38
- data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
- data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
- data/spec/extensions/serialization_spec.rb +0 -362
- data/spec/extensions/server_block_spec.rb +0 -90
- data/spec/extensions/server_logging_spec.rb +0 -45
- data/spec/extensions/set_overrides_spec.rb +0 -61
- data/spec/extensions/sharding_spec.rb +0 -198
- data/spec/extensions/shared_caching_spec.rb +0 -175
- data/spec/extensions/single_table_inheritance_spec.rb +0 -297
- data/spec/extensions/singular_table_names_spec.rb +0 -22
- data/spec/extensions/skip_create_refresh_spec.rb +0 -17
- data/spec/extensions/spec_helper.rb +0 -71
- data/spec/extensions/split_array_nil_spec.rb +0 -24
- data/spec/extensions/split_values_spec.rb +0 -22
- data/spec/extensions/sql_comments_spec.rb +0 -27
- data/spec/extensions/sql_expr_spec.rb +0 -60
- data/spec/extensions/static_cache_spec.rb +0 -361
- data/spec/extensions/string_agg_spec.rb +0 -85
- data/spec/extensions/string_date_time_spec.rb +0 -95
- data/spec/extensions/string_stripper_spec.rb +0 -68
- data/spec/extensions/subclasses_spec.rb +0 -66
- data/spec/extensions/subset_conditions_spec.rb +0 -38
- data/spec/extensions/table_select_spec.rb +0 -71
- data/spec/extensions/tactical_eager_loading_spec.rb +0 -136
- data/spec/extensions/thread_local_timezones_spec.rb +0 -67
- data/spec/extensions/timestamps_spec.rb +0 -175
- data/spec/extensions/to_dot_spec.rb +0 -154
- data/spec/extensions/touch_spec.rb +0 -203
- data/spec/extensions/tree_spec.rb +0 -274
- data/spec/extensions/typecast_on_load_spec.rb +0 -80
- data/spec/extensions/unlimited_update_spec.rb +0 -20
- data/spec/extensions/update_or_create_spec.rb +0 -87
- data/spec/extensions/update_primary_key_spec.rb +0 -100
- data/spec/extensions/update_refresh_spec.rb +0 -53
- data/spec/extensions/uuid_spec.rb +0 -106
- data/spec/extensions/validate_associated_spec.rb +0 -52
- data/spec/extensions/validation_class_methods_spec.rb +0 -1027
- data/spec/extensions/validation_helpers_spec.rb +0 -554
- data/spec/extensions/xml_serializer_spec.rb +0 -207
- data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
- data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
- data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
- data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
- data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
- data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/double_migration/001_create_sessions.rb +0 -9
- data/spec/files/double_migration/002_create_nodes.rb +0 -19
- data/spec/files/double_migration/003_3_create_users.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
- data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
- data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
- data/spec/files/empty_migration/001_create_sessions.rb +0 -9
- data/spec/files/empty_migration/002_create_nodes.rb +0 -0
- data/spec/files/empty_migration/003_3_create_users.rb +0 -4
- data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
- data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
- data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
- data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
- data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
- data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/reversible_migrations/001_reversible.rb +0 -5
- data/spec/files/reversible_migrations/002_reversible.rb +0 -5
- data/spec/files/reversible_migrations/003_reversible.rb +0 -5
- data/spec/files/reversible_migrations/004_reversible.rb +0 -5
- data/spec/files/reversible_migrations/005_reversible.rb +0 -10
- data/spec/files/reversible_migrations/006_reversible.rb +0 -10
- data/spec/files/reversible_migrations/007_reversible.rb +0 -10
- data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
- data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
- data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
- data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
- data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
- data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
- data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
- data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
- data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
- data/spec/guards_helper.rb +0 -55
- data/spec/integration/associations_test.rb +0 -2506
- data/spec/integration/database_test.rb +0 -113
- data/spec/integration/dataset_test.rb +0 -1858
- data/spec/integration/eager_loader_test.rb +0 -687
- data/spec/integration/migrator_test.rb +0 -262
- data/spec/integration/model_test.rb +0 -230
- data/spec/integration/plugin_test.rb +0 -2297
- data/spec/integration/prepared_statement_test.rb +0 -467
- data/spec/integration/schema_test.rb +0 -815
- data/spec/integration/spec_helper.rb +0 -56
- data/spec/integration/timezone_test.rb +0 -86
- data/spec/integration/transaction_test.rb +0 -406
- data/spec/integration/type_test.rb +0 -133
- data/spec/model/association_reflection_spec.rb +0 -565
- data/spec/model/associations_spec.rb +0 -4589
- data/spec/model/base_spec.rb +0 -759
- data/spec/model/class_dataset_methods_spec.rb +0 -150
- data/spec/model/dataset_methods_spec.rb +0 -149
- data/spec/model/eager_loading_spec.rb +0 -2197
- data/spec/model/hooks_spec.rb +0 -604
- data/spec/model/inflector_spec.rb +0 -26
- data/spec/model/model_spec.rb +0 -1097
- data/spec/model/plugins_spec.rb +0 -299
- data/spec/model/record_spec.rb +0 -2162
- data/spec/model/spec_helper.rb +0 -46
- data/spec/model/validations_spec.rb +0 -193
- data/spec/model_no_assoc_spec.rb +0 -1
- data/spec/model_spec.rb +0 -1
- data/spec/plugin_spec.rb +0 -1
- data/spec/sequel_coverage.rb +0 -15
- data/spec/spec_config.rb +0 -10
@@ -3,21 +3,19 @@
|
|
3
3
|
module Sequel
|
4
4
|
class Model
|
5
5
|
# This Module subclass is used by Model.dataset_module
|
6
|
-
# to add dataset methods to classes.
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
|
11
|
-
class DatasetModule < ::Module
|
6
|
+
# to add dataset methods to classes. In addition to the
|
7
|
+
# methods offered by Dataset::DatasetModule, it also
|
8
|
+
# automatically creates class methods for public dataset
|
9
|
+
# methods.
|
10
|
+
class DatasetModule < Dataset::DatasetModule
|
12
11
|
# Store the model related to this dataset module.
|
13
12
|
def initialize(model)
|
14
13
|
@model = model
|
15
14
|
end
|
16
15
|
|
17
|
-
#
|
18
|
-
# Model.subset for details.
|
16
|
+
# Alias for where.
|
19
17
|
def subset(name, *args, &block)
|
20
|
-
|
18
|
+
where(name, *args, &block)
|
21
19
|
end
|
22
20
|
|
23
21
|
private
|
@@ -25,8 +23,11 @@ module Sequel
|
|
25
23
|
# Add a class method to the related model that
|
26
24
|
# calls the dataset method of the same name.
|
27
25
|
def method_added(meth)
|
28
|
-
@model.send(:def_model_dataset_method, meth)
|
26
|
+
@model.send(:def_model_dataset_method, meth) if public_method_defined?(meth)
|
27
|
+
super
|
29
28
|
end
|
30
29
|
end
|
30
|
+
|
31
|
+
@dataset_module_class = DatasetModule
|
31
32
|
end
|
32
33
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
module Sequel
|
4
|
-
# Proc that is
|
4
|
+
# Proc that is instance_execed to create the default inflections for both the
|
5
5
|
# model inflector and the inflector extension.
|
6
6
|
DEFAULT_INFLECTIONS_PROC = proc do
|
7
7
|
plural(/$/, 's')
|
data/lib/sequel/model/errors.rb
CHANGED
@@ -5,8 +5,6 @@ module Sequel
|
|
5
5
|
# Errors represents validation errors, a simple hash subclass
|
6
6
|
# with a few convenience methods.
|
7
7
|
class Errors < ::Hash
|
8
|
-
ATTRIBUTE_JOINER = ' and '.freeze
|
9
|
-
|
10
8
|
# Adds an error for the given attribute.
|
11
9
|
#
|
12
10
|
# errors.add(:name, 'is not valid') if name == 'invalid'
|
@@ -40,7 +38,7 @@ module Sequel
|
|
40
38
|
def full_messages
|
41
39
|
inject([]) do |m, kv|
|
42
40
|
att, errors = *kv
|
43
|
-
errors.each {|e| m << (e.is_a?(LiteralString) ? e :
|
41
|
+
errors.each {|e| m << (e.is_a?(LiteralString) ? e : full_message(att, e))}
|
44
42
|
m
|
45
43
|
end
|
46
44
|
end
|
@@ -55,6 +53,15 @@ module Sequel
|
|
55
53
|
v
|
56
54
|
end
|
57
55
|
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
# Create full error message to use for the given attribute (or array of attributes)
|
60
|
+
# and error message. This can be overridden for easier internalization.
|
61
|
+
def full_message(att, error_msg)
|
62
|
+
att = att.join(' and ') if att.is_a?(Array)
|
63
|
+
"#{att} #{error_msg}"
|
64
|
+
end
|
58
65
|
end
|
59
66
|
end
|
60
67
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
3
|
module Sequel
|
4
|
-
# Exception class raised when +raise_on_save_failure+ is set and
|
5
|
-
# or an around hook doesn't
|
4
|
+
# Exception class raised when +raise_on_save_failure+ is set and an action is canceled in a hook.
|
5
|
+
# or an around hook doesn't yield.
|
6
6
|
class HookFailed < Error
|
7
7
|
# The Sequel::Model instance related to this error.
|
8
8
|
attr_reader :model
|
@@ -13,19 +13,22 @@ module Sequel
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
BeforeHookFailed = HookFailed
|
18
|
-
|
16
|
+
(
|
19
17
|
# Exception class raised when +require_modification+ is set and an UPDATE or DELETE statement to modify the dataset doesn't
|
20
18
|
# modify a single row.
|
21
19
|
NoExistingObject = Class.new(Error)
|
20
|
+
).name
|
22
21
|
|
22
|
+
(
|
23
23
|
# Raised when an undefined association is used when eager loading.
|
24
24
|
UndefinedAssociation = Class.new(Error)
|
25
|
+
).name
|
25
26
|
|
27
|
+
(
|
26
28
|
# Raised when a mass assignment method is called in strict mode with either a restricted column
|
27
29
|
# or a column without a setter method.
|
28
30
|
MassAssignmentRestriction = Class.new(Error)
|
31
|
+
).name
|
29
32
|
|
30
33
|
# Exception class raised when +raise_on_save_failure+ is set and validation fails
|
31
34
|
class ValidationFailed < Error
|
@@ -49,9 +52,4 @@ module Sequel
|
|
49
52
|
end
|
50
53
|
end
|
51
54
|
end
|
52
|
-
|
53
|
-
# Call name on each class to set the name for the class, so it gets cached.
|
54
|
-
constants.map{|c| const_get(c)}.each do |c|
|
55
|
-
Class === c && c.name
|
56
|
-
end
|
57
55
|
end
|
@@ -4,7 +4,7 @@ module Sequel
|
|
4
4
|
# Yield the Inflections module if a block is given, and return
|
5
5
|
# the Inflections module.
|
6
6
|
def self.inflections
|
7
|
-
yield Inflections if
|
7
|
+
yield Inflections if defined?(yield)
|
8
8
|
Inflections
|
9
9
|
end
|
10
10
|
|
@@ -25,19 +25,6 @@ module Sequel
|
|
25
25
|
# pluralization and singularization rules that is runs. This guarantees that your rules run before any of the rules that may
|
26
26
|
# already have been loaded.
|
27
27
|
module Inflections
|
28
|
-
CAMELIZE_CONVERT_REGEXP = /(^|_)(.)/.freeze
|
29
|
-
CAMELIZE_MODULE_REGEXP = /\/(.?)/.freeze
|
30
|
-
DASH = '-'.freeze
|
31
|
-
DEMODULIZE_CONVERT_REGEXP = /^.*::/.freeze
|
32
|
-
EMPTY_STRING= ''.freeze
|
33
|
-
SLASH = '/'.freeze
|
34
|
-
VALID_CONSTANT_NAME_REGEXP = /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/.freeze
|
35
|
-
UNDERSCORE = '_'.freeze
|
36
|
-
UNDERSCORE_CONVERT_REGEXP1 = /([A-Z]+)([A-Z][a-z])/.freeze
|
37
|
-
UNDERSCORE_CONVERT_REGEXP2 = /([a-z\d])([A-Z])/.freeze
|
38
|
-
UNDERSCORE_CONVERT_REPLACE = '\1_\2'.freeze
|
39
|
-
UNDERSCORE_MODULE_REGEXP = /::/.freeze
|
40
|
-
|
41
28
|
@plurals, @singulars, @uncountables = [], [], []
|
42
29
|
|
43
30
|
class << self
|
@@ -105,7 +92,7 @@ module Sequel
|
|
105
92
|
(@uncountables << words).flatten!
|
106
93
|
end
|
107
94
|
|
108
|
-
|
95
|
+
instance_exec(&DEFAULT_INFLECTIONS_PROC)
|
109
96
|
|
110
97
|
private
|
111
98
|
|
@@ -113,7 +100,7 @@ module Sequel
|
|
113
100
|
def camelize(s)
|
114
101
|
s = s.to_s
|
115
102
|
return s.camelize if s.respond_to?(:camelize)
|
116
|
-
s = s.gsub(
|
103
|
+
s = s.gsub(/\/(.?)/){|x| "::#{x[-1..-1].upcase unless x == '/'}"}.gsub(/(^|_)(.)/){|x| x[-1..-1].upcase}
|
117
104
|
s
|
118
105
|
end
|
119
106
|
|
@@ -123,7 +110,7 @@ module Sequel
|
|
123
110
|
def constantize(s)
|
124
111
|
s = s.to_s
|
125
112
|
return s.constantize if s.respond_to?(:constantize)
|
126
|
-
raise(NameError, "#{s.inspect} is not a valid constant name!") unless m =
|
113
|
+
raise(NameError, "#{s.inspect} is not a valid constant name!") unless m = /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/.match(s)
|
127
114
|
Object.module_eval("::#{m[1]}", __FILE__, __LINE__)
|
128
115
|
end
|
129
116
|
|
@@ -131,7 +118,7 @@ module Sequel
|
|
131
118
|
def demodulize(s)
|
132
119
|
s = s.to_s
|
133
120
|
return s.demodulize if s.respond_to?(:demodulize)
|
134
|
-
s.gsub(
|
121
|
+
s.gsub(/^.*::/, '')
|
135
122
|
end
|
136
123
|
|
137
124
|
# Returns the plural form of the word in the string.
|
@@ -157,8 +144,8 @@ module Sequel
|
|
157
144
|
def underscore(s)
|
158
145
|
s = s.to_s
|
159
146
|
return s.underscore if s.respond_to?(:underscore)
|
160
|
-
s.gsub(
|
161
|
-
gsub(
|
147
|
+
s.gsub('::', '/').gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
148
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').tr('-', '_').downcase
|
162
149
|
end
|
163
150
|
end
|
164
151
|
end
|
data/lib/sequel/model/plugins.rb
CHANGED
@@ -25,9 +25,15 @@ module Sequel
|
|
25
25
|
# In the given module +mod+, define methods that are call the same method
|
26
26
|
# on the dataset. This is designed for plugins to define dataset methods
|
27
27
|
# inside ClassMethods that call the implementations in DatasetMethods.
|
28
|
+
#
|
29
|
+
# This should not be called with untrusted input or method names that
|
30
|
+
# can't be used literally, since it uses class_eval.
|
28
31
|
def self.def_dataset_methods(mod, meths)
|
29
32
|
Array(meths).each do |meth|
|
30
33
|
mod.class_eval("def #{meth}(*args, &block); dataset.#{meth}(*args, &block) end", __FILE__, __LINE__)
|
34
|
+
# :nocov:
|
35
|
+
mod.send(:ruby2_keywords, meth) if respond_to?(:ruby2_keywords, true)
|
36
|
+
# :nocov:
|
31
37
|
end
|
32
38
|
end
|
33
39
|
|
@@ -37,15 +43,123 @@ module Sequel
|
|
37
43
|
mod.send(:define_method, :inherited_instance_variables) do ||
|
38
44
|
super().merge!(hash)
|
39
45
|
end
|
46
|
+
mod.send(:private, :inherited_instance_variables)
|
40
47
|
end
|
41
48
|
|
42
49
|
# Add method to +mod+ that overrides set_dataset to call the method afterward.
|
43
50
|
def self.after_set_dataset(mod, meth)
|
44
51
|
mod.send(:define_method, :set_dataset) do |*a|
|
45
52
|
r = super(*a)
|
53
|
+
# Allow calling private class methods as methods this specifies are usually private
|
46
54
|
send(meth)
|
47
55
|
r
|
48
56
|
end
|
49
57
|
end
|
58
|
+
|
59
|
+
method_num = 0
|
60
|
+
method_num_mutex = Mutex.new
|
61
|
+
# Return a unique method name symbol for the given suffix.
|
62
|
+
SEQUEL_METHOD_NAME = lambda do |suffix|
|
63
|
+
:"_sequel_#{suffix}_#{method_num_mutex.synchronize{method_num += 1}}"
|
64
|
+
end
|
65
|
+
|
66
|
+
# Define a private instance method using the block with the provided name and
|
67
|
+
# expected arity. If the name is given as a Symbol, it is used directly.
|
68
|
+
# If the name is given as a String, a unique name will be generated using
|
69
|
+
# that string. The expected_arity should be either 0 (no arguments) or
|
70
|
+
# 1 (single argument).
|
71
|
+
#
|
72
|
+
# If a block with an arity that does not match the expected arity is used,
|
73
|
+
# a deprecation warning will be issued. The method defined should still
|
74
|
+
# work, though it will be slower than a method with the expected arity.
|
75
|
+
#
|
76
|
+
# Sequel only checks arity for regular blocks, not lambdas. Lambdas were
|
77
|
+
# already strict in regards to arity, so there is no need to try to fix
|
78
|
+
# arity to keep backwards compatibility for lambdas.
|
79
|
+
#
|
80
|
+
# Blocks with required keyword arguments are not supported by this method.
|
81
|
+
def self.def_sequel_method(model, meth, expected_arity, &block)
|
82
|
+
if meth.is_a?(String)
|
83
|
+
meth = SEQUEL_METHOD_NAME.call(meth)
|
84
|
+
end
|
85
|
+
call_meth = meth
|
86
|
+
|
87
|
+
unless block.lambda?
|
88
|
+
required_args, optional_args, rest, keyword = _define_sequel_method_arg_numbers(block)
|
89
|
+
|
90
|
+
if keyword == :required
|
91
|
+
raise Error, "cannot use block with required keyword arguments when calling define_sequel_method with expected arity #{expected_arity}"
|
92
|
+
end
|
93
|
+
|
94
|
+
case expected_arity
|
95
|
+
when 0
|
96
|
+
unless required_args == 0
|
97
|
+
# SEQUEL6: remove
|
98
|
+
Sequel::Deprecation.deprecate("Arity mismatch in block passed to define_sequel_method. Expected Arity 0, but arguments required for #{block.inspect}. Support for this will be removed in Sequel 6.")
|
99
|
+
b = block
|
100
|
+
block = lambda{instance_exec(&b)} # Fallback
|
101
|
+
end
|
102
|
+
when 1
|
103
|
+
if required_args == 0 && optional_args == 0 && !rest
|
104
|
+
# SEQUEL6: remove
|
105
|
+
Sequel::Deprecation.deprecate("Arity mismatch in block passed to define_sequel_method. Expected Arity 1, but no arguments accepted for #{block.inspect}. Support for this will be removed in Sequel 6.")
|
106
|
+
temp_method = SEQUEL_METHOD_NAME.call("temp")
|
107
|
+
model.class_eval("def #{temp_method}(_) #{meth =~ /\A\w+\z/ ? "#{meth}_arity" : "send(:\"#{meth}_arity\")"} end", __FILE__, __LINE__)
|
108
|
+
model.send(:alias_method, meth, temp_method)
|
109
|
+
model.send(:undef_method, temp_method)
|
110
|
+
model.send(:private, meth)
|
111
|
+
meth = :"#{meth}_arity"
|
112
|
+
elsif required_args > 1
|
113
|
+
# SEQUEL6: remove
|
114
|
+
Sequel::Deprecation.deprecate("Arity mismatch in block passed to define_sequel_method. Expected Arity 1, but more arguments required for #{block.inspect}. Support for this will be removed in Sequel 6.")
|
115
|
+
b = block
|
116
|
+
block = lambda{|r| instance_exec(r, &b)} # Fallback
|
117
|
+
end
|
118
|
+
else
|
119
|
+
raise Error, "unexpected arity passed to define_sequel_method: #{expected_arity.inspect}"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
model.send(:define_method, meth, &block)
|
124
|
+
model.send(:private, meth)
|
125
|
+
model.send(:alias_method, meth, meth)
|
126
|
+
call_meth
|
127
|
+
end
|
128
|
+
|
129
|
+
# Return the number of required argument, optional arguments,
|
130
|
+
# whether the callable accepts any additional arguments,
|
131
|
+
# and whether the callable accepts keyword arguments (true, false
|
132
|
+
# or :required).
|
133
|
+
def self._define_sequel_method_arg_numbers(callable)
|
134
|
+
optional_args = 0
|
135
|
+
rest = false
|
136
|
+
keyword = false
|
137
|
+
callable.parameters.map(&:first).each do |arg_type, _|
|
138
|
+
case arg_type
|
139
|
+
when :opt
|
140
|
+
optional_args += 1
|
141
|
+
when :rest
|
142
|
+
rest = true
|
143
|
+
when :keyreq
|
144
|
+
keyword = :required
|
145
|
+
when :key, :keyrest
|
146
|
+
keyword ||= true
|
147
|
+
else
|
148
|
+
raise Error, "invalid arg_type passed to _define_sequel_method_arg_numbers: #{arg_type}"
|
149
|
+
end
|
150
|
+
end
|
151
|
+
arity = callable.arity
|
152
|
+
if arity < 0
|
153
|
+
arity = arity.abs - 1
|
154
|
+
end
|
155
|
+
required_args = arity
|
156
|
+
arity -= 1 if keyword == :required
|
157
|
+
|
158
|
+
# callable currently is always a non-lambda Proc
|
159
|
+
optional_args -= arity
|
160
|
+
|
161
|
+
[required_args, optional_args, rest, keyword]
|
162
|
+
end
|
163
|
+
private_class_method :_define_sequel_method_arg_numbers
|
50
164
|
end
|
51
165
|
end
|
data/lib/sequel/model.rb
CHANGED
@@ -1,22 +1,13 @@
|
|
1
1
|
# frozen-string-literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'core'
|
4
4
|
|
5
5
|
module Sequel
|
6
|
-
# Delegate to Sequel::Model, only for backwards compatibility.
|
7
|
-
def self.cache_anonymous_models
|
8
|
-
Model.cache_anonymous_models
|
9
|
-
end
|
10
|
-
|
11
|
-
# Delegate to Sequel::Model, only for backwards compatibility.
|
12
|
-
def self.cache_anonymous_models=(v)
|
13
|
-
Model.cache_anonymous_models = v
|
14
|
-
end
|
15
|
-
|
16
6
|
# <tt>Sequel::Model</tt> is an object relational mapper built on top of Sequel core. Each
|
17
7
|
# model class is backed by a dataset instance, and many dataset methods can be
|
18
8
|
# called directly on the class. Model datasets return rows as model instances,
|
19
|
-
# which
|
9
|
+
# which are wrappers around the underlying hash that allow easily updating or
|
10
|
+
# deleting the individual row.
|
20
11
|
#
|
21
12
|
# <tt>Sequel::Model</tt> is built completely out of plugins. Plugins can override any class,
|
22
13
|
# instance, or dataset method defined by a previous plugin and call super to get the default
|
@@ -29,77 +20,30 @@ module Sequel
|
|
29
20
|
class Model
|
30
21
|
OPTS = Sequel::OPTS
|
31
22
|
|
32
|
-
#
|
33
|
-
# of classes when dealing with code reloading.
|
34
|
-
ANONYMOUS_MODEL_CLASSES = @Model_cache = {}
|
35
|
-
|
36
|
-
# Mutex protecting access to ANONYMOUS_MODEL_CLASSES
|
37
|
-
ANONYMOUS_MODEL_CLASSES_MUTEX = @Model_mutex = Mutex.new
|
38
|
-
|
39
|
-
# Class methods added to model that call the method of the same name on the dataset
|
40
|
-
DATASET_METHODS = (Dataset::ACTION_METHODS + Dataset::QUERY_METHODS +
|
41
|
-
[:each_server]) - [:and, :or, :[], :columns, :columns!, :delete, :update, :add_graph_aliases, :first, :first!]
|
42
|
-
|
43
|
-
# Boolean settings that can be modified at the global, class, or instance level.
|
44
|
-
BOOLEAN_SETTINGS = [:typecast_empty_string_to_nil, :typecast_on_assignment, :strict_param_setting, \
|
45
|
-
:raise_on_save_failure, :raise_on_typecast_failure, :require_modification, :use_after_commit_rollback, :use_transactions]
|
46
|
-
|
47
|
-
# Hooks that are called before an action. Can return false to not do the action. When
|
48
|
-
# overriding these, it is recommended to call +super+ as the last line of your method,
|
49
|
-
# so later hooks are called before earlier hooks.
|
50
|
-
BEFORE_HOOKS = [:before_create, :before_update, :before_save, :before_destroy, :before_validation]
|
51
|
-
|
52
|
-
# Hooks that are called after an action. When overriding these, it is recommended to call
|
53
|
-
# +super+ on the first line of your method, so later hooks are called after earlier hooks.
|
54
|
-
AFTER_HOOKS = [:after_create, :after_update, :after_save, :after_destroy,
|
55
|
-
:after_validation, :after_commit, :after_rollback, :after_destroy_commit, :after_destroy_rollback]
|
56
|
-
|
57
|
-
# Hooks that are called around an action. If overridden, these methods must call super
|
58
|
-
# exactly once if the behavior they wrap is desired. The can be used to rescue exceptions
|
59
|
-
# raised by the code they wrap or ensure that some behavior is executed no matter what.
|
60
|
-
AROUND_HOOKS = [:around_create, :around_update, :around_save, :around_destroy, :around_validation]
|
61
|
-
|
62
|
-
# Empty instance methods to create that the user can override to get hook/callback behavior.
|
23
|
+
# Empty instance methods to create that the user can override.
|
63
24
|
# Just like any other method defined by Sequel, if you override one of these, you should
|
64
|
-
# call +super+ to get the default behavior (while empty by default, they
|
25
|
+
# call +super+ to get the default behavior (while empty by default, they are often overridden
|
65
26
|
# by plugins). See the {"Model Hooks" guide}[rdoc-ref:doc/model_hooks.rdoc] for
|
66
27
|
# more detail on hooks.
|
67
|
-
HOOKS =
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
:@use_after_commit_rollback=>nil, :@fast_pk_lookup_sql=>nil,
|
80
|
-
:@fast_instance_delete_sql=>nil, :@finders=>:dup, :@finder_loaders=>:dup,
|
81
|
-
:@db=>nil, :@default_set_fields_options=>:dup, :@require_valid_table=>nil,
|
82
|
-
:@cache_anonymous_models=>nil, :@Model_mutex=>nil}
|
83
|
-
|
84
|
-
# Regular expression that determines if a method name is normal in the sense that
|
85
|
-
# it could be used literally in ruby code without using send. Used to
|
86
|
-
# avoid problems when using eval with a string to define methods.
|
87
|
-
NORMAL_METHOD_NAME_REGEXP = /\A[A-Za-z_][A-Za-z0-9_]*\z/
|
88
|
-
|
89
|
-
# Regular expression that determines if the method is a valid setter name
|
90
|
-
# (i.e. it ends with =).
|
91
|
-
SETTER_METHOD_REGEXP = /=\z/
|
28
|
+
HOOKS = [
|
29
|
+
:after_create,
|
30
|
+
:after_destroy,
|
31
|
+
:after_save,
|
32
|
+
:after_update,
|
33
|
+
:after_validation,
|
34
|
+
:before_create,
|
35
|
+
:before_destroy,
|
36
|
+
:before_save,
|
37
|
+
:before_update,
|
38
|
+
:before_validation
|
39
|
+
].freeze
|
92
40
|
|
93
|
-
@allowed_columns = nil
|
94
41
|
@cache_anonymous_models = true
|
95
42
|
@db = nil
|
96
43
|
@db_schema = nil
|
97
44
|
@dataset = nil
|
98
45
|
@dataset_method_modules = []
|
99
|
-
@default_eager_limit_strategy = true
|
100
46
|
@default_set_fields_options = {}
|
101
|
-
@finders = {}
|
102
|
-
@finder_loaders = {}
|
103
47
|
@overridable_methods_module = nil
|
104
48
|
@fast_pk_lookup_sql = nil
|
105
49
|
@fast_instance_delete_sql = nil
|
@@ -108,28 +52,34 @@ module Sequel
|
|
108
52
|
@raise_on_save_failure = true
|
109
53
|
@raise_on_typecast_failure = false
|
110
54
|
@require_modification = nil
|
111
|
-
@require_valid_table =
|
55
|
+
@require_valid_table = true
|
112
56
|
@restrict_primary_key = true
|
113
|
-
@restricted_columns = nil
|
114
57
|
@setter_methods = nil
|
115
58
|
@simple_pk = nil
|
116
59
|
@simple_table = nil
|
117
60
|
@strict_param_setting = true
|
118
61
|
@typecast_empty_string_to_nil = true
|
119
62
|
@typecast_on_assignment = true
|
120
|
-
@use_after_commit_rollback = true
|
121
63
|
@use_transactions = true
|
122
64
|
|
123
|
-
|
65
|
+
require_relative "model/default_inflections"
|
66
|
+
require_relative "model/inflections"
|
67
|
+
require_relative "model/plugins"
|
68
|
+
require_relative "model/dataset_module"
|
69
|
+
require_relative "model/base"
|
70
|
+
require_relative "model/exceptions"
|
71
|
+
require_relative "model/errors"
|
72
|
+
# :nocov:
|
124
73
|
if !defined?(::SEQUEL_NO_ASSOCIATIONS) && !ENV.has_key?('SEQUEL_NO_ASSOCIATIONS')
|
125
|
-
|
74
|
+
# :nocov:
|
75
|
+
require_relative 'model/associations'
|
126
76
|
plugin Model::Associations
|
127
77
|
end
|
128
78
|
|
129
|
-
# The setter methods (methods ending with =) that are never allowed
|
130
|
-
# to be called automatically via +set+/+update+/+new+/etc..
|
131
|
-
RESTRICTED_SETTER_METHODS = instance_methods.map(&:to_s).grep(SETTER_METHOD_REGEXP)
|
132
|
-
|
133
79
|
def_Model(::Sequel)
|
80
|
+
|
81
|
+
# The setter methods (methods ending with =) that are never allowed
|
82
|
+
# to be called automatically via +set+/+update+/+new+/etc.
|
83
|
+
RESTRICTED_SETTER_METHODS = instance_methods.map(&:to_s).select{|l| l.end_with?('=')}.freeze
|
134
84
|
end
|
135
85
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'active_model'
|
4
4
|
module Sequel
|
5
5
|
module Plugins
|
6
|
-
# The
|
6
|
+
# The active_model plugin makes Sequel::Model objects
|
7
7
|
# pass the ActiveModel::Lint tests, which should
|
8
8
|
# hopefully mean full ActiveModel compliance. This should
|
9
9
|
# allow the full support of Sequel::Model objects in Rails 3+.
|
@@ -28,6 +28,14 @@ module Sequel
|
|
28
28
|
|
29
29
|
module ClassMethods
|
30
30
|
include ::ActiveModel::Naming
|
31
|
+
|
32
|
+
# Cache model_name and to_partial path value before freezing.
|
33
|
+
def freeze
|
34
|
+
model_name
|
35
|
+
_to_partial_path
|
36
|
+
|
37
|
+
super
|
38
|
+
end
|
31
39
|
|
32
40
|
# Class level cache for to_partial_path.
|
33
41
|
def _to_partial_path
|
@@ -36,9 +44,6 @@ module Sequel
|
|
36
44
|
end
|
37
45
|
|
38
46
|
module InstanceMethods
|
39
|
-
# The default string to join composite primary keys with in to_param.
|
40
|
-
DEFAULT_TO_PARAM_JOINER = '-'.freeze
|
41
|
-
|
42
47
|
# Record that an object was destroyed, for later use by
|
43
48
|
# destroyed?
|
44
49
|
def after_destroy
|
@@ -46,13 +51,6 @@ module Sequel
|
|
46
51
|
@destroyed = true
|
47
52
|
end
|
48
53
|
|
49
|
-
# Mark current instance as destroyed if the transaction in which this
|
50
|
-
# instance is created is rolled back.
|
51
|
-
def before_create
|
52
|
-
db.after_rollback{@destroyed = true}
|
53
|
-
super
|
54
|
-
end
|
55
|
-
|
56
54
|
# Return ::ActiveModel::Name instance for the class.
|
57
55
|
def model_name
|
58
56
|
model.model_name
|
@@ -60,7 +58,16 @@ module Sequel
|
|
60
58
|
|
61
59
|
# False if the object is new? or has been destroyed, true otherwise.
|
62
60
|
def persisted?
|
63
|
-
|
61
|
+
return false if new?
|
62
|
+
return false if defined?(@destroyed)
|
63
|
+
|
64
|
+
if defined?(@rollback_checker)
|
65
|
+
if @rollback_checker.call
|
66
|
+
return false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
true
|
64
71
|
end
|
65
72
|
|
66
73
|
# An array of primary key values, or nil if the object is not persisted.
|
@@ -72,7 +79,7 @@ module Sequel
|
|
72
79
|
end
|
73
80
|
end
|
74
81
|
|
75
|
-
# With the
|
82
|
+
# With the active_model plugin, Sequel model objects are already
|
76
83
|
# compliant, so this returns self.
|
77
84
|
def to_model
|
78
85
|
self
|
@@ -93,6 +100,15 @@ module Sequel
|
|
93
100
|
|
94
101
|
private
|
95
102
|
|
103
|
+
# For new objects, add a rollback checker to check if the transaction
|
104
|
+
# in which this instance is created is rolled back.
|
105
|
+
def _save(opts)
|
106
|
+
if new? && db.in_transaction?(opts)
|
107
|
+
@rollback_checker = db.rollback_checker(opts)
|
108
|
+
end
|
109
|
+
super
|
110
|
+
end
|
111
|
+
|
96
112
|
# Use ActiveModel compliant errors class.
|
97
113
|
def errors_class
|
98
114
|
Errors
|
@@ -100,7 +116,7 @@ module Sequel
|
|
100
116
|
|
101
117
|
# The string to use to join composite primary key param strings.
|
102
118
|
def to_param_joiner
|
103
|
-
|
119
|
+
'-'
|
104
120
|
end
|
105
121
|
end
|
106
122
|
end
|