Thanks Jeremy. Been using Sequel for aa number of years now. I've never
seen such a well maintained and professionally developed gem as Sequel. It
certainly instils confidence as a user.
On Saturday, 2 September 2017 11:18:59 UTC+10, Jeremy Evans wrote:
>
> Sequel 5.0.0 has been released!
>
> = Major Changes
>
> * Datasets are now frozen by default. Since Sequel's inception,
> datasets have used a method-chaining API that returned modified
> copies, but previously they still supported direct mutation. Now,
> datasets are always frozen and cannot be mutated. This allows many
> additional default optimizations related to caching, and provides
> greater thread safety.
>
> ds = DB[:table]
>
> # Before
> ds.row_proc = lambda{|h| h}
>
> # Now
> ds = ds.with_row_proc(lambda{|h| h})
>
> * Symbol splitting to create qualified and/or aliased identifiers is
> now disabled by default. While symbol splitting allowed for shorter
> code, it was not obvious and caused significant issues when using
> column names with embedded double or triple underscores. Sequel now
> offers many ways to create qualified and/or aliased identifiers.
>
> # Before
> :table__column # "table"."column"
>
> # Now
> :table__column # "table__column"
> Sequel[:table][:column] # "table"."column"
>
> # To get back historical behavior
> Sequel.split_symbols = true
>
> * Sequel no longer allows the use of plain ruby strings as SQL code
> fragments in the dataset filtering methods, as that makes it
> easier to introduce SQL injection vulnerabilities. You can use
> Sequel.lit to create literal strings (SQL code fragments), which
> makes it easier to do security auditing of applications using
> Sequel.
>
> # Before
> DB[:table].where("column = 1").all
>
> # Now
> DB[:table].where(Sequel.lit("column = 1")).all
> # or better
> DB[:table].where(column: 1).all
>
> # To get back historical behavior
> DB.extension :auto_literal_strings
>
> = Backwards Compatibility
>
> * All adapters, extensions, plugins, features, and constants
> deprecated in 4.49.0 have been removed. Before upgrading to Sequel
> 5.0.0, upgrade to 4.49.0 and fix all deprecation warnings.
>
> * Support for ruby 1.8.7 has been dropped, the minimum ruby version is
> now 1.9.2.
>
> * The {before,after,around}_validation hooks are now always called
> when saving, even if the validate: false option is used. This
> allows you to use the before_validation hook to make changes
> to the model instance that are required before validation and
> before saving even if not validating.
>
> * Getting column values for newly created model instances after
> insertion now happens before after_create is called, instead of
> after.
>
> * Sequel now immediately attempts to the connect to the database
> when a Database instance is created, in order to fail fast if the
> connection parameters are invalid.
>
> * The validates_unique method in the validation_helpers plugin
> now only checks for uniqueness by default if the record is new or
> one of the related columns has been modified by default.
>
> * Database schema modification methods and schema generator methods
> now return nil instead of some internal value.
>
> * Many cases where Sequel used Kernel#send internally have been
> switched to Kernel#public_send so they only call public methods.
>
> * Model association hooks are now nil instead of empty arrays by
> default.
>
> * Internal uses of instance_eval with a block have been changed to
> instance_exec. This allows them to be used with lambdas that
> take no arguments.
>
> * Most internal constants are now frozen, unless there is a
> requirement that they be modified at runtime.
>
> * The Model @was_new instance variable is now no longer set when
> saving new model instances.
>
> * The private Sequel::Postgres::PGArray::Parser#new_entry_buffer
> method in the pg_array extension has been removed.
>
> * Modifying Model.input_transformer_order in the input_transformer
> plugin no longer has an effect.
>
> = New Features
>
> * Database#add_index :if_not_exists option is now supported on
> PostgreSQL 9.5+.
>
> * SQL::Subscript#expression has been added to retrieve the
> expression that is subscripted.
>
> = Other Improvements
>
> * Threaded connection pools no longer block while new connections
> are being made. Previously, attempting to establish a new
> connection blocked all connection pool activity until the new
> connection was made.
>
> * Many minor performance improvements have been made.
>
> * The class_table_inheritance plugin now raises an error during
> Model#update if a query does not modify a single row, just as
> the default Model#update does.
>
> * ConnectionPool#size is now thread-safe in both threaded
> connection pools. Internal callers that already have the
> connection pool mutex should switch to using #_size (a new
> private method).
>
> * Registration of new serialization formats in the serialization
> plugin is now thread-safe.
>
> * If transactional schema modifications are not supported, a
> savepoint will not automatically be created when adding
> indexes for new tables inside transactions. This fixes issues
> when making schema changes inside transactions on MySQL.
>
> * Attempting to create a prepared statement using a dataset that
> uses a delayed evaluation now raises an error, because the
> prepared statement would not respect the delayed evaluation.
>
> * The bin/sequel -M option now uses base 10. Previously, it
> used the Kernel#Integer default, which was base 8 if there was
> a preceding 0.
>
> = Deprecated Features
>
> These deprecated features will be removed in Sequel 5.1.0.
>
> * Model.allowed_columns in the base plugin is now deprecated. Use
> the whitelist_security plugin if you want to call it.
>
> * Model use_after_commit_rollback class and instance accessors are
> now deprecated.
>
> * Defining the Model#_before_validation method is now deprecated.
> You can change to using before_validation.
>
> * The private Model.plugin_module_defined? method is now deprecated.
>
> Thanks,
> Jeremy
>
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.