8.9 KiB
Rails 4.0.0 (unreleased)
-
Implement HashWithIndifferentAccess#replace so key? works correctly. David Graham
-
Hash#extract! returns only those keys that present in the receiver.
{:a => 1, :b => 2}.extract!(:a, :x) # => {:a => 1}
Mikhail Dieterle
-
Hash#extract! returns the same subclass, that the receiver is. I.e. HashWithIndifferentAccess#extract! returns HashWithIndifferentAccess instance.
Mikhail Dieterle
-
Optimize ActiveSupport::Cache::Entry to reduce memory and processing overhead. Brian Durand
-
Tests tag the Rails log with the current test class and test case:
[SessionsControllerTest] [test_0002_sign in] Processing by SessionsController#create as HTML [SessionsControllerTest] [test_0002_sign in] ...
Jeremy Kemper
-
Add logger.push_tags and .pop_tags to complement logger.tagged:
class Job def before Rails.logger.push_tags :jobs, self.class.name end def after Rails.logger.pop_tags 2 end end
Jeremy Kemper
-
Allow delegation to the class using the
:class
keyword, replacingself.class
usage:class User def self.hello "world" end delegate :hello, to: :class end
Marc-Andre Lafortune
-
Date.beginning_of_week
thread local andbeginning_of_week
application config option added (default is Monday).Innokenty Mikhailov
-
An optional block can be passed to
config_accessor
to set its default valueclass User include ActiveSupport::Configurable config_accessor :hair_colors do [:brown, :black, :blonde, :red] end end User.hair_colors # => [:brown, :black, :blonde, :red]
Larry Lv
-
ActiveSupport::Benchmarkable#silence has been deprecated due to its lack of thread safety. It will be removed without replacement in Rails 4.1.
Steve Klabnik
-
An optional block can be passed to
Hash#deep_merge
. The block will be invoked for each duplicated key and used to resolve the conflict.Pranas Kiziela
-
ActiveSupport::Deprecation is now a class. It is possible to create an instance of deprecator. Backwards compatibility has been preserved.
You can choose which instance of the deprecator will be used.
deprecate :method_name, :deprecator => deprecator_instance
You can use ActiveSupport::Deprecation in your gem.
require 'active_support/deprecation' require 'active_support/core_ext/module/deprecation' class MyGem def self.deprecator ActiveSupport::Deprecation.new('2.0', 'MyGem') end def old_method end def new_method end deprecate :old_method => :new_method, :deprecator => deprecator end MyGem.new.old_method # => DEPRECATION WARNING: old_method is deprecated and will be removed from MyGem 2.0 (use new_method instead). (called from <main> at file.rb:18)
Piotr Niełacny & Robert Pankowecki
-
ERB::Util.html_escape
encodes single quote as#39
. Decimal form has better support in old browsers. Kalys Osmonov -
ActiveSupport::Callbacks
: deprecate monkey patch of object callbacks. Using the #filter method like this:before_filter MyFilter.new class MyFilter def filter(controller) end end
Is now deprecated with recommendation to use the corresponding filter type (
#before
,#after
or#around
):before_filter MyFilter.new class MyFilter def before(controller) end end
Bogdan Gusiev
-
An optional block can be passed to
HashWithIndifferentAccess#update
and#merge
. The block will be invoked for each duplicated key, and used to resolve the conflict, thus replicating the behaviour of the corresponding methods on theHash
class.Leo Cassarani
-
Remove
j
alias forERB::Util#json_escape
. Thej
alias is already used forActionView::Helpers::JavaScriptHelper#escape_javascript
and both modules are included in the view context that would confuse the developers.Akira Matsuda
-
Replace deprecated
memcache-client
gem withdalli
in ActiveSupport::Cache::MemCacheStoreGuillermo Iguaran
-
Add default values to all
ActiveSupport::NumberHelper
methods, to avoid errors with empty locales or missing values.Carlos Antonio da Silva
-
ActiveSupport::JSON::Variable
is deprecated. Define your own#as_json
and#encode_json
methods for custom JSON string literals.Erich Menge
-
Add String#indent. fxn & Ace Suares
-
Inflections can now be defined per locale.
singularize
andpluralize
accept locale as an extra argument.David Celis
-
Object#try
will now return nil instead of raise a NoMethodError if the receiving object does not implement the method, but you can still get the old behavior by using the newObject#try!
.DHH
-
ERB::Util.html_escape
now escapes single quotes. Santiago Pastorino -
Time#change
now works with time values with offsets other than UTC or the local time zone. Andrew White -
ActiveSupport::Callbacks
: deprecate usage of filter object with#before
and#after
methods asaround
callback. Bogdan Gusiev -
Add
Time#prev_quarter
andTime#next_quarter
short-hands formonths_ago(3)
andmonths_since(3)
. SungHee Kang -
Remove obsolete and unused
require_association
method from dependencies. fxn -
Add
:instance_accessor
option forconfig_accessor
.class User include ActiveSupport::Configurable config_accessor :allowed_access, instance_accessor: false end User.new.allowed_access = true # => NoMethodError User.new.allowed_access # => NoMethodError
Francesco Rodriguez
-
ActionView::Helpers::NumberHelper methods have been moved to ActiveSupport::NumberHelper and are now available via Numeric#to_s. Numeric#to_s now accepts the formatting options :phone, :currency, :percentage, :delimited, :rounded, :human, and :human_size. Andrew Mutz
-
Add
Hash#transform_keys
,Hash#transform_keys!
,Hash#deep_transform_keys
, andHash#deep_transform_keys!
. Mark McSpadden -
Changed xml type
datetime
todateTime
(with upper case letterT
). Angelo Capilleri -
Add
:instance_accessor
option forclass_attribute
. Alexey Vakhov -
constantize
now looks in the ancestor chain. Marc-Andre Lafortune & Andrew White -
Adds
Hash#deep_stringify_keys
andHash#deep_stringify_keys!
to convert all keys from a +Hash+ instance into strings Lucas Húngaro -
Adds
Hash#deep_symbolize_keys
andHash#deep_symbolize_keys!
to convert all keys from a +Hash+ instance into symbols Lucas Húngaro -
Object#try
can't call private methods. Vasiliy Ermolovich -
AS::Callbacks#run_callbacks
removekey
argument. Francesco Rodriguez -
deep_dup
works more expectedly now and duplicates also values in +Hash+ instances and elements in +Array+ instances. Alexey Gaziev -
Inflector no longer applies ice -> ouse to words like slice, police, ets Wes Morgan
-
Add
ActiveSupport::Deprecations.behavior = :silence
to completely ignore Rails runtime deprecations twinturbo -
Make Module#delegate stop using
send
- can no longer delegate to private methods. dasch -
AS::Callbacks: deprecate
:rescuable
option. Bogdan Gusiev -
Adds Integer#ordinal to get the ordinal suffix string of an integer. Tim Gildea
-
AS::Callbacks:
:per_key
option is no longer supported -
AS::Callbacks#define_callbacks
: add:skip_after_callbacks_if_terminated
option. -
Add html_escape_once to ERB::Util, and delegate escape_once tag helper to it. Carlos Antonio da Silva
-
Remove ActiveSupport::TestCase#pending method, use
skip
instead. Carlos Antonio da Silva -
Deprecates the compatibility method Module#local_constant_names, use Module#local_constants instead (which returns symbols). fxn
-
Deletes the compatibility method Module#method_names, use Module#methods from now on (which returns symbols). fxn
-
Deletes the compatibility method Module#instance_method_names, use Module#instance_methods from now on (which returns symbols). fxn
-
BufferedLogger is deprecated. Use ActiveSupport::Logger, or the logger from Ruby stdlib.
-
Unicode database updated to 6.1.0.
-
Adds
encode_big_decimal_as_string
option to force JSON serialization of BigDecimals as numeric instead of wrapping them in strings for safety. -
Remove deprecated ActiveSupport::JSON::Variable. Erich Menge
-
Optimize log subscribers to check log level before doing any processing. Brian Durand
Please check 3-2-stable for previous changes.