mirror of https://github.com/rails/rails
Point master changelogs to 4-1-stable branch
Remove 4-1 related entries from master [ci skip]
This commit is contained in:
parent
06f815e61c
commit
71b3910a7d
|
@ -1,61 +1 @@
|
|||
* Support the use of underscored symbols when registering interceptors and
|
||||
observers like we do elsewhere within Rails.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Add the ability to intercept emails before previewing in a similar fashion
|
||||
to how emails can be intercepted before delivery.
|
||||
|
||||
Fixes #13622.
|
||||
|
||||
Example:
|
||||
|
||||
class CSSInlineStyler
|
||||
def self.previewing_email(message)
|
||||
# inline CSS styles
|
||||
end
|
||||
end
|
||||
|
||||
ActionMailer::Base.register_preview_interceptor CSSInlineStyler
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Add mailer previews feature based on 37 Signals mail_view gem.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Calling `mail()` without arguments serves as getter for the current mail
|
||||
message and keeps previously set headers.
|
||||
|
||||
Fixes #13090.
|
||||
|
||||
Example:
|
||||
|
||||
class MailerWithCallback < ActionMailer::Base
|
||||
after_action :a_callback
|
||||
|
||||
def welcome
|
||||
mail subject: "subject", to: ["joe@example.com"]
|
||||
end
|
||||
|
||||
def a_callback
|
||||
mail # => returns the current mail message
|
||||
end
|
||||
end
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Instrument the generation of Action Mailer messages. The time it takes to
|
||||
generate a message is written to the log.
|
||||
|
||||
*Daniel Schierbeck*
|
||||
|
||||
* Invoke mailer defaults as procs only if they are procs, do not convert with
|
||||
`to_proc`. That an object is convertible to a proc does not mean it's meant
|
||||
to be always used as a proc.
|
||||
|
||||
Fixes #11533.
|
||||
|
||||
*Alex Tsukernik*
|
||||
|
||||
Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/actionmailer/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/actionmailer/CHANGELOG.md) for previous changes.
|
||||
|
|
|
@ -1,551 +1 @@
|
|||
* Introduce `render :html` as an option to render HTML content with a content
|
||||
type of `text/html`. This rendering option calls `ERB::Util.html_escape`
|
||||
internally to escape unsafe HTML string, so you will have to mark your
|
||||
string as html safe if you have any HTML tag in it.
|
||||
|
||||
Please see #12374 for more detail.
|
||||
|
||||
*Prem Sichanugrist*
|
||||
|
||||
* Introduce `render :plain` as an option to render content with a content type
|
||||
of `text/plain`. This is the preferred option if you are planning to render
|
||||
a plain text content.
|
||||
|
||||
Please see #12374 for more detail.
|
||||
|
||||
*Prem Sichanugrist*
|
||||
|
||||
* Introduce `render :body` as an option for sending a raw content back to
|
||||
browser. Note that this rendering option will unset the default content type
|
||||
and does not include "Content-Type" header back in the response.
|
||||
|
||||
You should only use this option if you are expecting the "Content-Type"
|
||||
header to not be set. More information on "Content-Type" header can be found
|
||||
on RFC 2616, section 7.2.1.
|
||||
|
||||
Please see #12374 for more detail.
|
||||
|
||||
*Prem Sichanugrist*
|
||||
|
||||
* Set stream status to 500 (or 400 on BadRequest) when an error is thrown
|
||||
before commiting.
|
||||
|
||||
Fixes #12552.
|
||||
|
||||
*Kevin Casey*
|
||||
|
||||
* Add new config option `config.action_dispatch.cookies_serializer` for
|
||||
specifying a serializer for the signed and encrypted cookie jars.
|
||||
|
||||
The possible values are:
|
||||
|
||||
* `:json` - serialize cookie values with `JSON`
|
||||
* `:marshal` - serialize cookie values with `Marshal`
|
||||
* `:hybrid` - transparently migrate existing `Marshal` cookie values to `JSON`
|
||||
|
||||
For new apps `:json` option is added by default and `:marshal` is used
|
||||
when no option is specified to maintain backwards compatibility.
|
||||
|
||||
*Łukasz Sarnacki*, *Matt Aimonetti*, *Guillermo Iguaran*, *Godfrey Chan*, *Rafael Mendonça França*
|
||||
|
||||
* `FlashHash` now behaves like a `HashWithIndifferentAccess`.
|
||||
|
||||
*Guillermo Iguaran*
|
||||
|
||||
* Set the `:shallow_path` scope option as each scope is generated rather than
|
||||
waiting until the `shallow` option is set. Also make the behavior of the
|
||||
`:shallow` resource option consistent with the behavior of the `shallow` method.
|
||||
|
||||
Fixes #12498.
|
||||
|
||||
*Andrew White*, *Aleksi Aalto*
|
||||
|
||||
* Properly require `action_view` in `AbstractController::Rendering` to prevent
|
||||
uninitialized constant error for `ENCODING_FLAG`.
|
||||
|
||||
*Philipe Fatio*
|
||||
|
||||
* Do not discard query parameters that form a hash with the same root key as
|
||||
the `wrapper_key` for a request using `wrap_parameters`.
|
||||
|
||||
*Josh Jordan*
|
||||
|
||||
* Ensure that `request.filtered_parameters` is reset between calls to `process`
|
||||
in `ActionController::TestCase`.
|
||||
|
||||
Fixes #13803.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Fix `rake routes` error when `Rails::Engine` with empty routes is mounted.
|
||||
|
||||
Fixes #13810.
|
||||
|
||||
*Maurizio De Santis*
|
||||
|
||||
* Log which keys were affected by deep munge.
|
||||
|
||||
Deep munge solves CVE-2013-0155 security vulnerability, but its
|
||||
behaviour is definately confusing, so now at least information
|
||||
about for which keys values were set to nil is visible in logs.
|
||||
|
||||
*Łukasz Sarnacki*
|
||||
|
||||
* Automatically convert dashes to underscores for shorthand routes, e.g:
|
||||
|
||||
get '/our-work/latest'
|
||||
|
||||
When running `rake routes` you will get the following output:
|
||||
|
||||
Prefix Verb URI Pattern Controller#Action
|
||||
our_work_latest GET /our-work/latest(.:format) our_work#latest
|
||||
|
||||
*Mikko Johansson*
|
||||
|
||||
* Automatically convert dashes to underscores for url helpers, e.g:
|
||||
|
||||
get '/contact-us' => 'pages#contact'
|
||||
get '/about-us' => 'pages#about_us'
|
||||
|
||||
When running `rake routes` you will get the following output:
|
||||
|
||||
Prefix Verb URI Pattern Controller#Action
|
||||
contact_us GET /contact-us(.:format) pages#contact
|
||||
about_us GET /about-us(.:format) pages#about_us
|
||||
|
||||
*Amr Tamimi*
|
||||
|
||||
* Fix stream closing when sending file with `ActionController::Live` included.
|
||||
|
||||
Fixes #12381
|
||||
|
||||
*Alessandro Diaferia*
|
||||
|
||||
* Allow an absolute controller path inside a module scope. Fixes #12777.
|
||||
|
||||
Example:
|
||||
|
||||
namespace :foo do
|
||||
# will route to BarController without the namespace.
|
||||
get '/special', to: '/bar#index'
|
||||
end
|
||||
|
||||
|
||||
* Unique the segment keys array for non-optimized url helpers
|
||||
|
||||
In Rails 3.2 you only needed pass an argument for dynamic segment once so
|
||||
unique the segment keys array to match the number of args. Since the number
|
||||
of args is less than required parts the non-optimized code path is selected.
|
||||
This means to benefit from optimized url generation the arg needs to be
|
||||
specified as many times as it appears in the path.
|
||||
|
||||
Fixes #12808.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Show full route constraints in error message.
|
||||
|
||||
When an optimized helper fails to generate, show the full route constraints
|
||||
in the error message. Previously it would only show the contraints that were
|
||||
required as part of the path.
|
||||
|
||||
Fixes #13592.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Use a custom route visitor for optimized url generation. Fixes #13349.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Allow engine root relative redirects using an empty string.
|
||||
|
||||
Example:
|
||||
|
||||
# application routes.rb
|
||||
mount BlogEngine => '/blog'
|
||||
|
||||
# engine routes.rb
|
||||
get '/welcome' => redirect('')
|
||||
|
||||
This now redirects to the path `/blog`, whereas before it would redirect
|
||||
to the application root path. In the case of a path redirect or a custom
|
||||
redirect if the path returned contains a host then the path is treated as
|
||||
absolute. Similarly for option redirects, if the options hash returned
|
||||
contains a `:host` or `:domain` key then the path is treated as absolute.
|
||||
|
||||
Fixes #7977.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Fix `Encoding::CompatibilityError` when public path is UTF-8
|
||||
|
||||
In #5337 we forced the path encoding to ASCII-8BIT to prevent static file handling
|
||||
from blowing up before an application has had chance to deal with possibly invalid
|
||||
urls. However this has a negative side effect of making it an incompatible encoding
|
||||
if the application's public path has UTF-8 characters in it.
|
||||
|
||||
To work around the problem we check to see if the path has a valid encoding once
|
||||
it has been unescaped. If it is not valid then we can return early since it will
|
||||
not match any file anyway.
|
||||
|
||||
Fixes #13518.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* `ActionController::Parameters#permit!` permits hashes in array values.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* Converts hashes in arrays of unfiltered params to unpermitted params.
|
||||
|
||||
Fixes #13382.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* New config option to opt out of params "deep munging" that was used to
|
||||
address security vulnerability CVE-2013-0155. In your app config:
|
||||
|
||||
config.action_dispatch.perform_deep_munge = false
|
||||
|
||||
Take care to understand the security risk involved before disabling this.
|
||||
[Read more.](https://groups.google.com/forum/#!topic/rubyonrails-security/t1WFuuQyavI)
|
||||
|
||||
*Bernard Potocki*
|
||||
|
||||
* `rake routes` shows routes defined under assets prefix.
|
||||
|
||||
*Ryunosuke SATO*
|
||||
|
||||
* Extend cross-site request forgery (CSRF) protection to GET requests with
|
||||
JavaScript responses, protecting apps from cross-origin `<script>` tags.
|
||||
|
||||
*Jeremy Kemper*
|
||||
|
||||
* Fix generating a path for engine inside a resources block.
|
||||
|
||||
Fixes #8533.
|
||||
|
||||
*Piotr Sarnacki*
|
||||
|
||||
* Add `Mime::Type.register "text/vcard", :vcf` to the default list of mime types.
|
||||
|
||||
*DHH*
|
||||
|
||||
* Remove deprecated `ActionController::RecordIdentifier`, use
|
||||
`ActionView::RecordIdentifier` instead.
|
||||
|
||||
*kennyj*
|
||||
|
||||
* Fix regression when using `ActionView::Helpers::TranslationHelper#translate` with
|
||||
`options[:raise]`.
|
||||
|
||||
This regression was introduced at ec16ba75a5493b9da972eea08bae630eba35b62f.
|
||||
|
||||
*Shota Fukumori (sora_h)*
|
||||
|
||||
* Introducing Variants
|
||||
|
||||
We often want to render different html/json/xml templates for phones,
|
||||
tablets, and desktop browsers. Variants make it easy.
|
||||
|
||||
The request variant is a specialization of the request format, like `:tablet`,
|
||||
`:phone`, or `:desktop`.
|
||||
|
||||
You can set the variant in a `before_action`:
|
||||
|
||||
request.variant = :tablet if request.user_agent =~ /iPad/
|
||||
|
||||
Respond to variants in the action just like you respond to formats:
|
||||
|
||||
respond_to do |format|
|
||||
format.html do |html|
|
||||
html.tablet # renders app/views/projects/show.html+tablet.erb
|
||||
html.phone { extra_setup; render ... }
|
||||
end
|
||||
end
|
||||
|
||||
Provide separate templates for each format and variant:
|
||||
|
||||
app/views/projects/show.html.erb
|
||||
app/views/projects/show.html+tablet.erb
|
||||
app/views/projects/show.html+phone.erb
|
||||
|
||||
You can also simplify the variants definition using the inline syntax:
|
||||
|
||||
respond_to do |format|
|
||||
format.js { render "trash" }
|
||||
format.html.phone { redirect_to progress_path }
|
||||
format.html.none { render "trash" }
|
||||
end
|
||||
|
||||
Variants also support common `any`/`all` block that formats have.
|
||||
|
||||
It works for both inline:
|
||||
|
||||
respond_to do |format|
|
||||
format.html.any { render text: "any" }
|
||||
format.html.phone { render text: "phone" }
|
||||
end
|
||||
|
||||
and block syntax:
|
||||
|
||||
respond_to do |format|
|
||||
format.html do |variant|
|
||||
variant.any(:tablet, :phablet){ render text: "any" }
|
||||
variant.phone { render text: "phone" }
|
||||
end
|
||||
end
|
||||
|
||||
*Łukasz Strzałkowski*
|
||||
|
||||
* Fix render of localized templates without an explicit format using wrong
|
||||
content header and not passing correct formats to template due to the
|
||||
introduction of the `NullType` for mimes.
|
||||
|
||||
Templates like `hello.it.erb` were subject to this issue.
|
||||
|
||||
Fixes #13064.
|
||||
|
||||
*Angelo Capilleri*, *Carlos Antonio da Silva*
|
||||
|
||||
* Try to escape each part of a url correctly when using a redirect route.
|
||||
|
||||
Fixes #13110.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Better error message for typos in assert_response argument.
|
||||
|
||||
When the response type argument to `assert_response` is not a known
|
||||
response type, `assert_response` now throws an ArgumentError with a clear
|
||||
message. This is intended to help debug typos in the response type.
|
||||
|
||||
*Victor Costan*
|
||||
|
||||
* Fix formatting for `rake routes` when a section is shorter than a header.
|
||||
|
||||
*Sıtkı Bağdat*
|
||||
|
||||
* Take a hash with options inside array in `#url_for`.
|
||||
|
||||
Example:
|
||||
|
||||
url_for [:new, :admin, :post, { param: 'value' }]
|
||||
# => http://example.com/admin/posts/new?param=value
|
||||
|
||||
*Andrey Ognevsky*
|
||||
|
||||
* Add `session#fetch` method
|
||||
|
||||
fetch behaves like [Hash#fetch](http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-fetch).
|
||||
It returns a value from the hash for the given key.
|
||||
If the key can’t be found, there are several options:
|
||||
|
||||
* With no other arguments, it will raise an KeyError exception.
|
||||
* If a default value is given, then that will be returned.
|
||||
* If the optional code block is specified, then that will be run and its result returned.
|
||||
|
||||
*Damien Mathieu*
|
||||
|
||||
* Don't let strong parameters mutate the given hash via `fetch`
|
||||
|
||||
Create a new instance if the given parameter is a `Hash` instead of
|
||||
passing it to the `convert_hashes_to_parameters` method since it is
|
||||
overriding its default value.
|
||||
|
||||
*Brendon Murphy*, *Doug Cole*
|
||||
|
||||
* Add `params` option to `button_to` form helper, which renders the given hash
|
||||
as hidden form fields.
|
||||
|
||||
*Andy Waite*
|
||||
|
||||
* Make assets helpers work in the controllers like it works in the views.
|
||||
|
||||
Example:
|
||||
|
||||
# config/application.rb
|
||||
config.asset_host = 'http://mycdn.com'
|
||||
|
||||
ActionController::Base.helpers.asset_path('fallback.png')
|
||||
# => http://mycdn.com/assets/fallback.png
|
||||
|
||||
Fixes #10051.
|
||||
|
||||
*Tima Maslyuchenko*
|
||||
|
||||
* Respect `SCRIPT_NAME` when using `redirect` with a relative path
|
||||
|
||||
Example:
|
||||
|
||||
# application routes.rb
|
||||
mount BlogEngine => '/blog'
|
||||
|
||||
# engine routes.rb
|
||||
get '/admin' => redirect('admin/dashboard')
|
||||
|
||||
This now redirects to the path `/blog/admin/dashboard`, whereas before it would've
|
||||
generated an invalid url because there would be no slash between the host name and
|
||||
the path. It also allows redirects to work where the application is deployed to a
|
||||
subdirectory of a website.
|
||||
|
||||
Fixes #7977.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Fixing repond_with working directly on the options hash
|
||||
This fixes an issue where the respond_with worked directly with the given
|
||||
options hash, so that if a user relied on it after calling respond_with,
|
||||
the hash wouldn't be the same.
|
||||
|
||||
Fixes #12029.
|
||||
|
||||
*bluehotdog*
|
||||
|
||||
* Fix `ActionDispatch::RemoteIp::GetIp#calculate_ip` to only check for spoofing
|
||||
attacks if both `HTTP_CLIENT_IP` and `HTTP_X_FORWARDED_FOR` are set.
|
||||
|
||||
Fixes #10844.
|
||||
|
||||
*Tamir Duberstein*
|
||||
|
||||
* Strong parameters should permit nested number as key.
|
||||
|
||||
Fixes #12293.
|
||||
|
||||
*kennyj*
|
||||
|
||||
* Fix regex used to detect URI schemes in `redirect_to` to be consistent with
|
||||
RFC 3986.
|
||||
|
||||
*Derek Prior*
|
||||
|
||||
* Fix incorrect `assert_redirected_to` failure message for protocol-relative
|
||||
URLs.
|
||||
|
||||
*Derek Prior*
|
||||
|
||||
* Fix an issue where router can't recognize downcased url encoding path.
|
||||
|
||||
Fixes #12269.
|
||||
|
||||
*kennyj*
|
||||
|
||||
* Fix custom flash type definition. Misusage of the `_flash_types` class variable
|
||||
caused an error when reloading controllers with custom flash types.
|
||||
|
||||
Fixes #12057.
|
||||
|
||||
*Ricardo de Cillo*
|
||||
|
||||
* Do not break params filtering on `nil` values.
|
||||
|
||||
Fixes #12149.
|
||||
|
||||
*Vasiliy Ermolovich*
|
||||
|
||||
* Development mode exceptions are rendered in text format in case of XHR request.
|
||||
|
||||
*Kir Shatrov*
|
||||
|
||||
* Fix an issue where :if and :unless controller action procs were being run
|
||||
before checking for the correct action in the :only and :unless options.
|
||||
|
||||
Fixes #11799.
|
||||
|
||||
*Nicholas Jakobsen*
|
||||
|
||||
* Fix an issue where `assert_dom_equal` and `assert_dom_not_equal` were
|
||||
ignoring the passed failure message argument.
|
||||
|
||||
Fixes #11751.
|
||||
|
||||
*Ryan McGeary*
|
||||
|
||||
* Allow REMOTE_ADDR, HTTP_HOST and HTTP_USER_AGENT to be overridden from
|
||||
the environment passed into `ActionDispatch::TestRequest.new`.
|
||||
|
||||
Fixes #11590.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Fix an issue where Journey was failing to clear the named routes hash when the
|
||||
routes were reloaded and since it doesn't overwrite existing routes then if a
|
||||
route changed but wasn't renamed it kept the old definition. This was being
|
||||
masked by the optimised url helpers so it only became apparent when passing an
|
||||
options hash to the url helper.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Skip routes pointing to a redirect or mounted application when generating urls
|
||||
using an options hash as they aren't relevant and generate incorrect urls.
|
||||
|
||||
Fixes #8018.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Move `MissingHelperError` out of the `ClassMethods` module.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Fix an issue where rails raise exception about missing helper where it
|
||||
should throw `LoadError`. When helper file exists and only loaded file from
|
||||
this helper does not exist rails should throw LoadError instead of
|
||||
`MissingHelperError`.
|
||||
|
||||
*Piotr Niełacny*
|
||||
|
||||
* Fix `ActionDispatch::ParamsParser#parse_formatted_parameters` to rewind body input stream on
|
||||
parsing json params.
|
||||
|
||||
Fixes #11345.
|
||||
|
||||
*Yuri Bol*, *Paul Nikitochkin*
|
||||
|
||||
* Ignore spaces around delimiter in Set-Cookie header.
|
||||
|
||||
*Yamagishi Kazutoshi*
|
||||
|
||||
* Remove deprecated Rails application fallback for integration testing, set
|
||||
`ActionDispatch.test_app` instead.
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated `page_cache_extension` config.
|
||||
|
||||
*Francesco Rodriguez*
|
||||
|
||||
* Remove deprecated constants from Action Controller:
|
||||
|
||||
ActionController::AbstractRequest => ActionDispatch::Request
|
||||
ActionController::Request => ActionDispatch::Request
|
||||
ActionController::AbstractResponse => ActionDispatch::Response
|
||||
ActionController::Response => ActionDispatch::Response
|
||||
ActionController::Routing => ActionDispatch::Routing
|
||||
ActionController::Integration => ActionDispatch::Integration
|
||||
ActionController::IntegrationTest => ActionDispatch::IntegrationTest
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Fix `Mime::Type.parse` when bad accepts header is looked up. Previously it
|
||||
was setting `request.formats` with an array containing a `nil` value, which
|
||||
raised an error when setting the controller formats.
|
||||
|
||||
Fixes #10965.
|
||||
|
||||
*Becker*
|
||||
|
||||
* Merge `:action` from routing scope and assign endpoint if both `:controller`
|
||||
and `:action` are present. The endpoint assignment only occurs if there is
|
||||
no `:to` present in the options hash so should only affect routes using the
|
||||
shorthand syntax (i.e. endpoint is inferred from the path).
|
||||
|
||||
Fixes #9856.
|
||||
|
||||
*Yves Senn*, *Andrew White*
|
||||
|
||||
* Action View extracted from Action Pack.
|
||||
|
||||
*Piotr Sarnacki*, *Łukasz Strzałkowski*
|
||||
|
||||
Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/actionpack/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/actionpack/CHANGELOG.md) for previous changes.
|
||||
|
|
|
@ -1,331 +1 @@
|
|||
* Fix ActionView label translation for more than 10 nested elements.
|
||||
|
||||
*Vladimir Krylov*
|
||||
|
||||
* Added `:plain`, `:html` and `:body` option for `render` method. Please see
|
||||
Action Pack's release note for more detail.
|
||||
|
||||
*Prem Sichanugrist*
|
||||
|
||||
* Date select helpers accept a format string for the months selector via the
|
||||
new option `:month_format_string`.
|
||||
|
||||
When rendered, the format string gets passed keys `:number` (integer), and
|
||||
`:name` (string), in order to be able to interpolate them as in
|
||||
|
||||
'%{name} (%<number>02d)'
|
||||
|
||||
for example.
|
||||
|
||||
This option is motivated by #13618.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* Added `config.action_view.raise_on_missing_translations` to define whether an
|
||||
error should be raised for missing translations.
|
||||
|
||||
Fixes #13196.
|
||||
|
||||
*Kassio Borges*
|
||||
|
||||
* Improved ERB dependency detection. New argument types and formattings for the `render`
|
||||
calls can be matched.
|
||||
|
||||
Fixes #13074, #13116.
|
||||
|
||||
*João Britto*
|
||||
|
||||
* Use `display:none` instead of `display:inline` for hidden fields.
|
||||
|
||||
Fixes #6403.
|
||||
|
||||
*Gaelian Ditchburn*
|
||||
|
||||
* The `video_tag` helper accepts a number as `:size`.
|
||||
|
||||
The `:size` option of the `video_tag` helper now can be specified
|
||||
with a stringified number. The `width` and `height` attributes of
|
||||
the generated tag will be the same.
|
||||
|
||||
*Kuldeep Aggarwal*
|
||||
|
||||
* Escape format, negative_format and units options of number helpers
|
||||
|
||||
Fixes: CVE-2014-0081
|
||||
|
||||
* A Cycle object should accept an array and cycle through it as it would with a set of
|
||||
comma-separated objects.
|
||||
|
||||
arr = [1,2,3]
|
||||
cycle(arr) # => '1'
|
||||
cycle(arr) # => '2'
|
||||
cycle(arr) # => '3'
|
||||
|
||||
Previously, it would return the array as a string, because it took the array as a
|
||||
single object:
|
||||
|
||||
arr = [1,2,3]
|
||||
cycle(arr) # => '[1,2,3]'
|
||||
cycle(arr) # => '[1,2,3]'
|
||||
cycle(arr) # => '[1,2,3]'
|
||||
|
||||
*Kristian Freeman*
|
||||
|
||||
* Label tags generated by collection helpers only inherit the `:index` and
|
||||
`:namespace` from the input, because only these attributes modifies the
|
||||
`for` attribute of the label. Also, the input attributes don't have
|
||||
precedence over the label attributes anymore.
|
||||
|
||||
Before:
|
||||
|
||||
collection = [[1, true, { class: 'foo' }]]
|
||||
f.collection_check_boxes :options, collection, :second, :first do |b|
|
||||
b.label(class: 'my_custom_class')
|
||||
end
|
||||
|
||||
# => <label class="foo" for="user_active_true">1</label>
|
||||
|
||||
After:
|
||||
|
||||
collection = [[1, true, { class: 'foo' }]]
|
||||
f.collection_check_boxes :options, collection, :second, :first do |b|
|
||||
b.label(class: 'my_custom_class')
|
||||
end
|
||||
|
||||
# => <label class="my_custom_class" for="user_active_true">1</label>
|
||||
|
||||
*Andriel Nuernberg*
|
||||
|
||||
* Fixed a long-standing bug in `json_escape` that causes quotation marks to be stripped.
|
||||
This method also escapes the \u2028 and \u2029 unicode newline characters which are
|
||||
treated as \n in JavaScript. This matches the behaviour of the AS::JSON encoder. (The
|
||||
original change in the encoder was introduced in #10534.)
|
||||
|
||||
*Godfrey Chan*
|
||||
|
||||
* `ActionView::MissingTemplate` includes underscore when raised for a partial.
|
||||
|
||||
Fixes #13002.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Use `set_backtrace` instead of instance variable `@backtrace` in ActionView exceptions.
|
||||
|
||||
*Shimpei Makimoto*
|
||||
|
||||
* Fix `simple_format` escapes own output when passing `sanitize: true`.
|
||||
|
||||
*Paul Seidemann*
|
||||
|
||||
* Ensure `ActionView::Digestor.cache` is correctly cleaned up when
|
||||
combining recursive templates with `ActionView::Resolver.caching = false`.
|
||||
|
||||
*wyaeld*
|
||||
|
||||
* Fix `collection_check_boxes` generated hidden input to use the name attribute provided
|
||||
in the options hash.
|
||||
|
||||
*Angel N. Sciortino*
|
||||
|
||||
* Fix some edge cases for AV `select` helper with `:selected` option.
|
||||
|
||||
*Bogdan Gusiev*
|
||||
|
||||
* Ability to pass a block to the `select` helper.
|
||||
|
||||
Example:
|
||||
|
||||
<%= select(report, "campaign_ids") do %>
|
||||
<% available_campaigns.each do |c| -%>
|
||||
<%= content_tag(:option, c.name, value: c.id, data: { tags: c.tags.to_json }) %>
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
|
||||
*Bogdan Gusiev*
|
||||
|
||||
* Handle `:namespace` form option in collection labels.
|
||||
|
||||
*Vasiliy Ermolovich*
|
||||
|
||||
* Fix `form_for` when both `namespace` and `as` options are present.
|
||||
|
||||
`as` option no longer overwrites `namespace` option when generating
|
||||
html id attribute of the form element.
|
||||
|
||||
*Adam Niedzielski*
|
||||
|
||||
* Fix `excerpt` when `:separator` is `nil`.
|
||||
|
||||
*Paul Nikitochkin*
|
||||
|
||||
* Only cache template digests if `config.cache_template_loading` is true.
|
||||
|
||||
*Josh Lauer*, *Justin Ridgewell*
|
||||
|
||||
* Fixed a bug where the lookup details were not being taken into account
|
||||
when caching the digest of a template - changes to the details now
|
||||
cause a different cache key to be used.
|
||||
|
||||
*Daniel Schierbeck*
|
||||
|
||||
* Added an `extname` hash option for `javascript_include_tag` method.
|
||||
|
||||
Before:
|
||||
|
||||
javascript_include_tag('templates.jst')
|
||||
# => <script src="/javascripts/templates.jst.js"></script>
|
||||
|
||||
After:
|
||||
|
||||
javascript_include_tag('templates.jst', extname: false )
|
||||
# => <script src="/javascripts/templates.jst"></script>
|
||||
|
||||
*Nathan Stitt*
|
||||
|
||||
* Fix `current_page?` when the URL contains escaped characters and the
|
||||
original URL is using the hexadecimal lowercased.
|
||||
|
||||
*Rafael Mendonça França*
|
||||
|
||||
* Fix `text_area` to behave like `text_field` when `nil` is given as
|
||||
value.
|
||||
|
||||
Before:
|
||||
|
||||
f.text_field :field, value: nil #=> <input value="">
|
||||
f.text_area :field, value: nil #=> <textarea>value of field</textarea>
|
||||
|
||||
After:
|
||||
|
||||
f.text_area :field, value: nil #=> <textarea></textarea>
|
||||
|
||||
*Joel Cogen*
|
||||
|
||||
* Element of the `grouped_options_for_select` can
|
||||
optionally contain html attributes as the last element of the array.
|
||||
|
||||
grouped_options_for_select(
|
||||
[["North America", [['United States','US'],"Canada"], data: { foo: 'bar' }]]
|
||||
)
|
||||
|
||||
*Vasiliy Ermolovich*
|
||||
|
||||
* Fix default rendered format problem when calling `render` without :content_type option.
|
||||
It should return :html. Fix #11393.
|
||||
|
||||
*Gleb Mazovetskiy*, *Oleg*, *kennyj*
|
||||
|
||||
* Fix `link_to` with block and url hashes.
|
||||
|
||||
Before:
|
||||
|
||||
link_to(action: 'bar', controller: 'foo') { content_tag(:span, 'Example site') }
|
||||
# => "<a action=\"bar\" controller=\"foo\"><span>Example site</span></a>"
|
||||
|
||||
After:
|
||||
|
||||
link_to(action: 'bar', controller: 'foo') { content_tag(:span, 'Example site') }
|
||||
# => "<a href=\"/foo/bar\"><span>Example site</span></a>"
|
||||
|
||||
*Murahashi Sanemat Kenichi*
|
||||
|
||||
* Fix "Stack Level Too Deep" error when redering recursive partials.
|
||||
|
||||
Fixes #11340.
|
||||
|
||||
*Rafael Mendonça França*
|
||||
|
||||
* Added an `enforce_utf8` hash option for `form_tag` method.
|
||||
|
||||
Control to output a hidden input tag with name `utf8` without monkey
|
||||
patching.
|
||||
|
||||
Before:
|
||||
|
||||
form_tag
|
||||
# => '<form>..<input name="utf8" type="hidden" value="✓" />..</form>'
|
||||
|
||||
After:
|
||||
|
||||
form_tag
|
||||
# => '<form>..<input name="utf8" type="hidden" value="✓" />..</form>'
|
||||
|
||||
form_tag({}, { :enforce_utf8 => false })
|
||||
# => '<form>....</form>'
|
||||
|
||||
*ma2gedev*
|
||||
|
||||
* Remove the deprecated `include_seconds` argument from `distance_of_time_in_words`,
|
||||
pass in an `:include_seconds` hash option to use this feature.
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated block passing to `FormBuilder#new`.
|
||||
|
||||
*Vipul A M*
|
||||
|
||||
* Pick `DateField` `DateTimeField` and `ColorField` values from stringified options allowing use of symbol keys with helpers.
|
||||
|
||||
*Jon Rowe*
|
||||
|
||||
* Remove the deprecated `prompt` argument from `grouped_options_for_select`,
|
||||
pass in a `:prompt` hash option to use this feature.
|
||||
|
||||
*kennyj*
|
||||
|
||||
* Always escape the result of `link_to_unless` method.
|
||||
|
||||
Before:
|
||||
|
||||
link_to_unless(true, '<b>Showing</b>', 'github.com')
|
||||
# => "<b>Showing</b>"
|
||||
|
||||
After:
|
||||
|
||||
link_to_unless(true, '<b>Showing</b>', 'github.com')
|
||||
# => "<b>Showing</b>"
|
||||
|
||||
*dtaniwaki*
|
||||
|
||||
* Use a case insensitive URI Regexp for #asset_path.
|
||||
|
||||
This fix a problem where the same asset path using different case are generating
|
||||
different URIs.
|
||||
|
||||
Before:
|
||||
|
||||
image_tag("HTTP://google.com")
|
||||
# => "<img alt=\"Google\" src=\"/assets/HTTP://google.com\" />"
|
||||
image_tag("http://google.com")
|
||||
# => "<img alt=\"Google\" src=\"http://google.com\" />"
|
||||
|
||||
After:
|
||||
|
||||
image_tag("HTTP://google.com")
|
||||
# => "<img alt=\"Google\" src=\"HTTP://google.com\" />"
|
||||
image_tag("http://google.com")
|
||||
# => "<img alt=\"Google\" src=\"http://google.com\" />"
|
||||
|
||||
*David Celis*
|
||||
|
||||
* Element of the `collection_check_boxes` and `collection_radio_buttons` can
|
||||
optionally contain html attributes as the last element of the array.
|
||||
|
||||
*Vasiliy Ermolovich*
|
||||
|
||||
* Update the HTML `BOOLEAN_ATTRIBUTES` in `ActionView::Helpers::TagHelper`
|
||||
to conform to the latest HTML 5.1 spec. Add attributes `allowfullscreen`,
|
||||
`default`, `inert`, `sortable`, `truespeed`, `typemustmatch`. Fix attribute
|
||||
`seamless` (previously misspelled `seemless`).
|
||||
|
||||
*Alex Peattie*
|
||||
|
||||
* Fix an issue where partials with a number in the filename weren't being digested for cache dependencies.
|
||||
|
||||
*Bryan Ricker*
|
||||
|
||||
* First release, ActionView extracted from ActionPack.
|
||||
|
||||
*Piotr Sarnacki*, *Łukasz Strzałkowski*
|
||||
|
||||
Please check [4-0-stable (ActionPack's CHANGELOG)](https://github.com/rails/rails/blob/4-0-stable/actionpack/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/actionview/CHANGELOG.md) for previous changes.
|
||||
|
|
|
@ -1,72 +1 @@
|
|||
* `#to_param` returns `nil` if `#to_key` returns `nil`. Fixes #11399.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Ability to specify multiple contexts when defining a validation.
|
||||
|
||||
Example:
|
||||
|
||||
class Person
|
||||
include ActiveModel::Validations
|
||||
|
||||
attr_reader :name
|
||||
validates_presence_of :name, on: [:verify, :approve]
|
||||
end
|
||||
|
||||
person = Person.new
|
||||
person.valid? # => true
|
||||
person.valid?(:verify) # => false
|
||||
person.errors.full_messages_for(:name) # => ["Name can't be blank"]
|
||||
person.valid?(:approve) # => false
|
||||
person.errors.full_messages_for(:name) # => ["Name can't be blank"]
|
||||
|
||||
*Vince Puzzella*
|
||||
|
||||
* `attribute_changed?` now accepts a hash to check if the attribute was
|
||||
changed `:from` and/or `:to` a given value.
|
||||
|
||||
Example:
|
||||
|
||||
model.name_changed?(from: "Pete", to: "Ringo")
|
||||
|
||||
*Tejas Dinkar*
|
||||
|
||||
* Fix `has_secure_password` to honor bcrypt-ruby's cost attribute.
|
||||
|
||||
*T.J. Schuck*
|
||||
|
||||
* Updated the `ActiveModel::Dirty#changed_attributes` method to be indifferent between using
|
||||
symbols and strings as keys.
|
||||
|
||||
*William Myers*
|
||||
|
||||
* Added new API methods `reset_changes` and `changes_applied` to `ActiveModel::Dirty`
|
||||
that control changes state. Previsously you needed to update internal
|
||||
instance variables, but now API methods are available.
|
||||
|
||||
*Bogdan Gusiev*
|
||||
|
||||
* Fix `has_secure_password` not to trigger `password_confirmation` validations
|
||||
if no `password_confirmation` is set.
|
||||
|
||||
*Vladimir Kiselev*
|
||||
|
||||
* `inclusion` / `exclusion` validations with ranges will only use the faster
|
||||
`Range#cover` for numerical ranges, and the more accurate `Range#include?`
|
||||
for non-numerical ones.
|
||||
|
||||
Fixes range validations like `:a..:f` that used to pass with values like `:be`.
|
||||
Fixes #10593.
|
||||
|
||||
*Charles Bergeron*
|
||||
|
||||
* Fix regression in `has_secure_password`. When a password is set, but a
|
||||
confirmation is an empty string, it would incorrectly save.
|
||||
|
||||
*Steve Klabnik* and *Phillip Calvin*
|
||||
|
||||
* Deprecate `Validator#setup`. This should be done manually now in the validator's constructor.
|
||||
|
||||
*Nick Sutterer*
|
||||
|
||||
Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/activemodel/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/activemodel/CHANGELOG.md) for previous changes.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -26,636 +26,4 @@
|
|||
|
||||
*Jeremy Kemper*
|
||||
|
||||
* Added `Object#presence_in` to simplify value whitelisting.
|
||||
|
||||
Before:
|
||||
|
||||
params[:bucket_type].in?(%w( project calendar )) ? params[:bucket_type] : nil
|
||||
|
||||
After:
|
||||
|
||||
params[:bucket_type].presence_in %w( project calendar )
|
||||
|
||||
*DHH*
|
||||
|
||||
* Time helpers honor the application time zone when passed a date.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* Fix the implementation of Multibyte::Unicode.tidy_bytes for JRuby
|
||||
|
||||
The existing implementation caused JRuby to raise the error:
|
||||
`Encoding::ConverterNotFoundError: code converter not found (UTF-8 to UTF8-MAC)`
|
||||
|
||||
*Justin Coyne*
|
||||
|
||||
* Fix `to_param` behavior when there are nested empty hashes.
|
||||
|
||||
Before:
|
||||
|
||||
params = {c: 3, d: {}}.to_param # => "&c=3"
|
||||
|
||||
After:
|
||||
|
||||
params = {c: 3, d: {}}.to_param # => "c=3&d="
|
||||
|
||||
Fixes #13892.
|
||||
|
||||
*Hincu Petru*
|
||||
|
||||
* Deprecate custom `BigDecimal` serialization.
|
||||
|
||||
Deprecate the custom `BigDecimal` serialization that is included when requiring
|
||||
`active_support/all` as a fix for #12467. Let Ruby handle YAML serialization
|
||||
for `BigDecimal` instead.
|
||||
|
||||
*David Celis*
|
||||
|
||||
* Fix parsing bugs in `XmlMini`
|
||||
|
||||
Symbols or boolean parsing would raise an error for non string values (e.g.
|
||||
integers). Decimal parsing would fail due to a missing requirement.
|
||||
|
||||
*Birkir A. Barkarson*
|
||||
|
||||
* Maintain the current timezone when calling `wrap_with_time_zone`
|
||||
|
||||
Extend the solution from the fix for #12163 to the general case where `Time`
|
||||
methods are wrapped with a time zone.
|
||||
|
||||
Fixes #12596.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Remove behavior that automatically remove the Date/Time stubs, added by `travel`
|
||||
and `travel_to` methods, after each test case.
|
||||
|
||||
Now users have to use the `travel_back` or the block version of `travel` and
|
||||
`travel_to` methods to clean the stubs.
|
||||
|
||||
*Rafael Mendonça França*
|
||||
|
||||
* Add `travel_back` to remove stubs from `travel` and `travel_to`.
|
||||
|
||||
*Rafael Mendonça França*
|
||||
|
||||
* Remove the deprecation about the `#filter` method.
|
||||
|
||||
Filter objects should now rely on method corresponding to the filter type
|
||||
(e.g. `#before`).
|
||||
|
||||
*Aaron Patterson*
|
||||
|
||||
* Add `ActiveSupport::JSON::Encoding.time_precision` as a way to configure the
|
||||
precision of encoded time values:
|
||||
|
||||
Time.utc(2000, 1, 1).as_json # => "2000-01-01T00:00:00.000Z"
|
||||
ActiveSupport::JSON::Encoding.time_precision = 0
|
||||
Time.utc(2000, 1, 1).as_json # => "2000-01-01T00:00:00Z"
|
||||
|
||||
*Parker Selbert*
|
||||
|
||||
* Maintain the current timezone when calling `change` during DST overlap
|
||||
|
||||
Currently if a time is changed during DST overlap in the autumn then the method
|
||||
`period_for_local` will return the DST period. However if the original time is
|
||||
not DST then this can be surprising and is not what is generally wanted. This
|
||||
commit changes that behavior to maintain the current period if it's in the list
|
||||
of periods returned by `periods_for_local`.
|
||||
|
||||
Fixes #12163.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Added `Hash#compact` and `Hash#compact!` for removing items with nil value
|
||||
from hash.
|
||||
|
||||
*Celestino Gomes*
|
||||
|
||||
* Maintain proleptic gregorian in Time#advance
|
||||
|
||||
`Time#advance` uses `Time#to_date` and `Date#advance` to calculate a new date.
|
||||
The `Date` object returned by `Time#to_date` is constructed with the assumption
|
||||
that the `Time` object represents a proleptic gregorian date, but it is
|
||||
configured to observe the default julian calendar reform date (2299161j)
|
||||
for purposes of calculating month, date and year:
|
||||
|
||||
Time.new(1582, 10, 4).to_date.to_s # => "1582-09-24"
|
||||
Time.new(1582, 10, 4).to_date.gregorian.to_s # => "1582-10-04"
|
||||
|
||||
This patch ensures that when the intermediate `Date` object is advanced
|
||||
to yield a new `Date` object, that the `Time` object for return is constructed
|
||||
with a proleptic gregorian month, date and year.
|
||||
|
||||
*Riley Lynch*
|
||||
|
||||
* `MemCacheStore` should only accept a `Dalli::Client`, or create one.
|
||||
|
||||
*arthurnn*
|
||||
|
||||
* Don't lazy load the `tzinfo` library as it causes problems on Windows.
|
||||
|
||||
Fixes #13553.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Use `remove_possible_method` instead of `remove_method` to avoid
|
||||
a `NameError` to be thrown on FreeBSD with the `Date` object.
|
||||
|
||||
*Rafael Mendonça França*, *Robin Dupret*
|
||||
|
||||
* `blank?` and `present?` commit to return singletons.
|
||||
|
||||
*Xavier Noria*, *Pavel Pravosud*
|
||||
|
||||
* Fixed Float related error in NumberHelper with large precisions.
|
||||
|
||||
Before:
|
||||
|
||||
ActiveSupport::NumberHelper.number_to_rounded '3.14159', precision: 50
|
||||
#=> "3.14158999999999988261834005243144929409027099609375"
|
||||
|
||||
After:
|
||||
|
||||
ActiveSupport::NumberHelper.number_to_rounded '3.14159', precision: 50
|
||||
#=> "3.14159000000000000000000000000000000000000000000000"
|
||||
|
||||
*Kenta Murata*, *Akira Matsuda*
|
||||
|
||||
* Default the new `I18n.enforce_available_locales` config to `true`, meaning
|
||||
`I18n` will make sure that all locales passed to it must be declared in the
|
||||
`available_locales` list.
|
||||
|
||||
To disable it add the following configuration to your application:
|
||||
|
||||
config.i18n.enforce_available_locales = false
|
||||
|
||||
This also ensures I18n configuration is properly initialized taking the new
|
||||
option into account, to avoid their deprecations while booting up the app.
|
||||
|
||||
*Carlos Antonio da Silva*, *Yves Senn*
|
||||
|
||||
* Introduce Module#concerning: a natural, low-ceremony way to separate
|
||||
responsibilities within a class.
|
||||
|
||||
Imported from https://github.com/37signals/concerning#readme
|
||||
|
||||
class Todo < ActiveRecord::Base
|
||||
concerning :EventTracking do
|
||||
included do
|
||||
has_many :events
|
||||
end
|
||||
|
||||
def latest_event
|
||||
...
|
||||
end
|
||||
|
||||
private
|
||||
def some_internal_method
|
||||
...
|
||||
end
|
||||
end
|
||||
|
||||
concerning :Trashable do
|
||||
def trashed?
|
||||
...
|
||||
end
|
||||
|
||||
def latest_event
|
||||
super some_option: true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
is equivalent to defining these modules inline, extending them into
|
||||
concerns, then mixing them in to the class.
|
||||
|
||||
Inline concerns tame "junk drawer" classes that intersperse many unrelated
|
||||
class-level declarations, public instance methods, and private
|
||||
implementation. Coalesce related bits and give them definition.
|
||||
These are a stepping stone toward future growth & refactoring.
|
||||
|
||||
When to move on from an inline concern:
|
||||
* Encapsulating state? Extract collaborator object.
|
||||
* Encompassing more public behavior or implementation? Move to separate file.
|
||||
* Sharing behavior among classes? Move to separate file.
|
||||
|
||||
*Jeremy Kemper*
|
||||
|
||||
* Fix file descriptor being leaked on each call to `Kernel.silence_stream`.
|
||||
|
||||
*Mario Visic*
|
||||
|
||||
* Added `Date#all_week/month/quarter/year` for generating date ranges.
|
||||
|
||||
*Dmitriy Meremyanin*
|
||||
|
||||
* Add `Time.zone.yesterday` and `Time.zone.tomorrow`. These follow the
|
||||
behavior of Ruby's `Date.yesterday` and `Date.tomorrow` but return localized
|
||||
versions, similar to how `Time.zone.today` has returned a localized version
|
||||
of `Date.today`.
|
||||
|
||||
*Colin Bartlett*
|
||||
|
||||
* Show valid keys when `assert_valid_keys` raises an exception, and show the
|
||||
wrong value as it was entered.
|
||||
|
||||
*Gonzalo Rodríguez-Baltanás Díaz*
|
||||
|
||||
* Both `cattr_*` and `mattr_*` method definitions now live in `active_support/core_ext/module/attribute_accessors`.
|
||||
|
||||
Requires to `active_support/core_ext/class/attribute_accessors` are
|
||||
deprecated and will be removed in Ruby on Rails 4.2.
|
||||
|
||||
*Genadi Samokovarov*
|
||||
|
||||
* Deprecated `Numeric#{ago,until,since,from_now}`, the user is expected to explicitly
|
||||
convert the value into an AS::Duration, i.e. `5.ago` => `5.seconds.ago`
|
||||
|
||||
This will help to catch subtle bugs like:
|
||||
|
||||
def recent?(days = 3)
|
||||
self.created_at >= days.ago
|
||||
end
|
||||
|
||||
The above code would check if the model is created within the last 3 **seconds**.
|
||||
|
||||
In the future, `Numeric#{ago,until,since,from_now}` should be removed completely,
|
||||
or throw some sort of errors to indicate there are no implicit conversion from
|
||||
Numeric to AS::Duration.
|
||||
|
||||
*Godfrey Chan*
|
||||
|
||||
* Requires JSON gem version 1.7.7 or above due to a security issue in older versions.
|
||||
|
||||
*Godfrey Chan*
|
||||
|
||||
* Removed the old pure-Ruby JSON encoder and switched to a new encoder based on the built-in JSON
|
||||
gem.
|
||||
|
||||
Support for encoding `BigDecimal` as a JSON number, as well as defining custom `encode_json`
|
||||
methods to control the JSON output has been **removed from core**. The new encoder will always
|
||||
encode BigDecimals as `String`s and ignore any custom `encode_json` methods.
|
||||
|
||||
The old encoder has been extracted into the `activesupport-json_encoder` gem. Installing that
|
||||
gem will bring back the ability to encode `BigDecimal`s as numbers as well as `encode_json`
|
||||
support.
|
||||
|
||||
Setting the related configuration `ActiveSupport.encode_big_decimal_as_string` without the
|
||||
`activesupport-json_encoder` gem installed will raise an error.
|
||||
|
||||
*Godfrey Chan*
|
||||
|
||||
* Add `ActiveSupport::Testing::TimeHelpers#travel` and `#travel_to`. These methods change current
|
||||
time to the given time or time difference by stubbing `Time.now` and `Date.today` to return the
|
||||
time or date after the difference calculation, or the time or date that got passed into the
|
||||
method respectively.
|
||||
|
||||
Example for `#travel`:
|
||||
|
||||
Time.now # => 2013-11-09 15:34:49 -05:00
|
||||
travel 1.day
|
||||
Time.now # => 2013-11-10 15:34:49 -05:00
|
||||
Date.today # => Sun, 10 Nov 2013
|
||||
|
||||
Example for `#travel_to`:
|
||||
|
||||
Time.now # => 2013-11-09 15:34:49 -05:00
|
||||
travel_to Time.new(2004, 11, 24, 01, 04, 44)
|
||||
Time.now # => 2004-11-24 01:04:44 -05:00
|
||||
Date.today # => Wed, 24 Nov 2004
|
||||
|
||||
Both of these methods also accept a block, which will return the current time back to its
|
||||
original state at the end of the block:
|
||||
|
||||
Time.now # => 2013-11-09 15:34:49 -05:00
|
||||
|
||||
travel 1.day do
|
||||
User.create.created_at # => Sun, 10 Nov 2013 15:34:49 EST -05:00
|
||||
end
|
||||
|
||||
travel_to Time.new(2004, 11, 24, 01, 04, 44) do
|
||||
User.create.created_at # => Wed, 24 Nov 2004 01:04:44 EST -05:00
|
||||
end
|
||||
|
||||
Time.now # => 2013-11-09 15:34:49 -05:00
|
||||
|
||||
This module is included in `ActiveSupport::TestCase` automatically.
|
||||
|
||||
*Prem Sichanugrist*, *DHH*
|
||||
|
||||
* Unify `cattr_*` interface: allow to pass a block to `cattr_reader`.
|
||||
|
||||
Example:
|
||||
|
||||
class A
|
||||
cattr_reader(:defr) { 'default_reader_value' }
|
||||
end
|
||||
A.defr # => 'default_reader_value'
|
||||
|
||||
*Alexey Chernenkov*
|
||||
|
||||
* Improved compatibility with the stdlib JSON gem.
|
||||
|
||||
Previously, calling `::JSON.{generate,dump}` sometimes causes unexpected
|
||||
failures such as intridea/multi_json#86.
|
||||
|
||||
`::JSON.{generate,dump}` now bypasses the ActiveSupport JSON encoder
|
||||
completely and yields the same result with or without ActiveSupport. This
|
||||
means that it will **not** call `as_json` and will ignore any options that
|
||||
the JSON gem does not natively understand. To invoke ActiveSupport's JSON
|
||||
encoder instead, use `obj.to_json(options)` or
|
||||
`ActiveSupport::JSON.encode(obj, options)`.
|
||||
|
||||
*Godfrey Chan*
|
||||
|
||||
* Fix Active Support `Time#to_json` and `DateTime#to_json` to return 3 decimal
|
||||
places worth of fractional seconds, similar to `TimeWithZone`.
|
||||
|
||||
*Ryan Glover*
|
||||
|
||||
* Removed circular reference protection in JSON encoder, deprecated
|
||||
`ActiveSupport::JSON::Encoding::CircularReferenceError`.
|
||||
|
||||
*Godfrey Chan*, *Sergio Campamá*
|
||||
|
||||
* Add `capitalize` option to `Inflector.humanize`, so strings can be humanized without being capitalized:
|
||||
|
||||
'employee_salary'.humanize # => "Employee salary"
|
||||
'employee_salary'.humanize(capitalize: false) # => "employee salary"
|
||||
|
||||
*claudiob*
|
||||
|
||||
* Fixed `Object#as_json` and `Struct#as_json` not working properly with options. They now take
|
||||
the same options as `Hash#as_json`:
|
||||
|
||||
struct = Struct.new(:foo, :bar).new
|
||||
struct.foo = "hello"
|
||||
struct.bar = "world"
|
||||
json = struct.as_json(only: [:foo]) # => {foo: "hello"}
|
||||
|
||||
*Sergio Campamá*, *Godfrey Chan*
|
||||
|
||||
* Added `Numeric#in_milliseconds`, like `1.hour.in_milliseconds`, so we can feed them to JavaScript functions like `getTime()`.
|
||||
|
||||
*DHH*
|
||||
|
||||
* Calling `ActiveSupport::JSON.decode` with unsupported options now raises an error.
|
||||
|
||||
*Godfrey Chan*
|
||||
|
||||
* Support `:unless_exist` in `FileStore`.
|
||||
|
||||
*Michael Grosser*
|
||||
|
||||
* Fix `slice!` deleting the default value of the hash.
|
||||
|
||||
*Antonio Santos*
|
||||
|
||||
* `require_dependency` accepts objects that respond to `to_path`, in
|
||||
particular `Pathname` instances.
|
||||
|
||||
*Benjamin Fleischer*
|
||||
|
||||
* Disable the ability to iterate over Range of AS::TimeWithZone
|
||||
due to significant performance issues.
|
||||
|
||||
*Bogdan Gusiev*
|
||||
|
||||
* Allow attaching event subscribers to ActiveSupport::Notifications namespaces
|
||||
before they're defined. Essentially, this means instead of this:
|
||||
|
||||
class JokeSubscriber < ActiveSupport::Subscriber
|
||||
def sql(event)
|
||||
puts "A rabbi and a priest walk into a bar..."
|
||||
end
|
||||
|
||||
# This call needs to happen *after* defining the methods.
|
||||
attach_to "active_record"
|
||||
end
|
||||
|
||||
You can do this:
|
||||
|
||||
class JokeSubscriber < ActiveSupport::Subscriber
|
||||
# This is much easier to read!
|
||||
attach_to "active_record"
|
||||
|
||||
def sql(event)
|
||||
puts "A rabbi and a priest walk into a bar..."
|
||||
end
|
||||
end
|
||||
|
||||
This should make it easier to read and understand these subscribers.
|
||||
|
||||
*Daniel Schierbeck*
|
||||
|
||||
* Add `Date#middle_of_day`, `DateTime#middle_of_day` and `Time#middle_of_day` methods.
|
||||
|
||||
Also added `midday`, `noon`, `at_midday`, `at_noon` and `at_middle_of_day` as aliases.
|
||||
|
||||
*Anatoli Makarevich*
|
||||
|
||||
* Fix ActiveSupport::Cache::FileStore#cleanup to no longer rely on missing each_key method.
|
||||
|
||||
*Murray Steele*
|
||||
|
||||
* Ensure that autoloaded constants in all-caps nestings are marked as
|
||||
autoloaded.
|
||||
|
||||
*Simon Coffey*
|
||||
|
||||
* Add `String#remove(pattern)` as a short-hand for the common pattern of
|
||||
`String#gsub(pattern, '')`.
|
||||
|
||||
*DHH*
|
||||
|
||||
* Adds a new deprecation behaviour that raises an exception. Throwing this
|
||||
line into +config/environments/development.rb+
|
||||
|
||||
ActiveSupport::Deprecation.behavior = :raise
|
||||
|
||||
will cause the application to raise an +ActiveSupport::DeprecationException+
|
||||
on deprecations.
|
||||
|
||||
Use this for aggressive deprecation cleanups.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* Remove 'cow' => 'kine' irregular inflection from default inflections.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Add `DateTime#to_s(:iso8601)` and `Date#to_s(:iso8601)` for consistency.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Add `Time#to_s(:iso8601)` for easy conversion of times to the iso8601 format for easy Javascript date parsing.
|
||||
|
||||
*DHH*
|
||||
|
||||
* Improve `ActiveSupport::Cache::MemoryStore` cache size calculation.
|
||||
The memory used by a key/entry pair is calculated via `#cached_size`:
|
||||
|
||||
def cached_size(key, entry)
|
||||
key.to_s.bytesize + entry.size + PER_ENTRY_OVERHEAD
|
||||
end
|
||||
|
||||
The value of `PER_ENTRY_OVERHEAD` is 240 bytes based on an [empirical
|
||||
estimation](https://gist.github.com/ssimeonov/6047200) for 64-bit MRI on
|
||||
1.9.3 and 2.0.
|
||||
|
||||
Fixes #11512.
|
||||
|
||||
*Simeon Simeonov*
|
||||
|
||||
* Only raise `Module::DelegationError` if it's the source of the exception.
|
||||
|
||||
Fixes #10559.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Make `Time.at_with_coercion` retain the second fraction and return local time.
|
||||
|
||||
Fixes #11350.
|
||||
|
||||
*Neer Friedman*, *Andrew White*
|
||||
|
||||
* Make `HashWithIndifferentAccess#select` always return the hash, even when
|
||||
`Hash#select!` returns `nil`, to allow further chaining.
|
||||
|
||||
*Marc Schütz*
|
||||
|
||||
* Remove deprecated `String#encoding_aware?` core extensions (`core_ext/string/encoding`).
|
||||
|
||||
*Arun Agrawal*
|
||||
|
||||
* Remove deprecated `Module#local_constant_names` in favor of `Module#local_constants`.
|
||||
|
||||
*Arun Agrawal*
|
||||
|
||||
* Remove deprecated `DateTime.local_offset` in favor of `DateTime.civil_from_format`.
|
||||
|
||||
*Arun Agrawal*
|
||||
|
||||
* Remove deprecated `Logger` core extensions (`core_ext/logger.rb`).
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated `Time#time_with_datetime_fallback`, `Time#utc_time`
|
||||
and `Time#local_time` in favor of `Time#utc` and `Time#local`.
|
||||
|
||||
*Vipul A M*
|
||||
|
||||
* Remove deprecated `Hash#diff` with no replacement.
|
||||
|
||||
If you're using it to compare hashes for the purpose of testing, please use
|
||||
MiniTest's `assert_equal` instead.
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated `Date#to_time_in_current_zone` in favor of `Date#in_time_zone`.
|
||||
|
||||
*Vipul A M*
|
||||
|
||||
* Remove deprecated `Proc#bind` with no replacement.
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated `Array#uniq_by` and `Array#uniq_by!`, use native
|
||||
`Array#uniq` and `Array#uniq!` instead.
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated `ActiveSupport::BasicObject`, use `ActiveSupport::ProxyObject` instead.
|
||||
|
||||
*Carlos Antonio da Silva*
|
||||
|
||||
* Remove deprecated `BufferedLogger`, use `ActiveSupport::Logger` instead.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Remove deprecated `assert_present` and `assert_blank` methods, use `assert
|
||||
object.blank?` and `assert object.present?` instead.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Fix return value from `BacktraceCleaner#noise` when the cleaner is configured
|
||||
with multiple silencers.
|
||||
|
||||
Fixes #11030.
|
||||
|
||||
*Mark J. Titorenko*
|
||||
|
||||
* `HashWithIndifferentAccess#select` now returns a `HashWithIndifferentAccess`
|
||||
instance instead of a `Hash` instance.
|
||||
|
||||
Fixes #10723.
|
||||
|
||||
*Albert Llop*
|
||||
|
||||
* Add `DateTime#usec` and `DateTime#nsec` so that `ActiveSupport::TimeWithZone` keeps
|
||||
sub-second resolution when wrapping a `DateTime` value.
|
||||
|
||||
Fixes #10855.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Fix `ActiveSupport::Dependencies::Loadable#load_dependency` calling
|
||||
`#blame_file!` on Exceptions that do not have the Blamable mixin
|
||||
|
||||
*Andrew Kreiling*
|
||||
|
||||
* Override `Time.at` to support the passing of Time-like values when called with a single argument.
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Prevent side effects to hashes inside arrays when
|
||||
`Hash#with_indifferent_access` is called.
|
||||
|
||||
Fixes #10526.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Removed deprecated `ActiveSupport::JSON::Variable` with no replacement.
|
||||
|
||||
*Toshinori Kajihara*
|
||||
|
||||
* Raise an error when multiple `included` blocks are defined for a Concern.
|
||||
The old behavior would silently discard previously defined blocks, running
|
||||
only the last one.
|
||||
|
||||
*Mike Dillon*
|
||||
|
||||
* Replace `multi_json` with `json`.
|
||||
|
||||
Since Rails requires Ruby 1.9 and since Ruby 1.9 includes `json` in the standard library,
|
||||
`multi_json` is no longer necessary.
|
||||
|
||||
*Erik Michaels-Ober*
|
||||
|
||||
* Added escaping of U+2028 and U+2029 inside the json encoder.
|
||||
These characters are legal in JSON but break the Javascript interpreter.
|
||||
After escaping them, the JSON is still legal and can be parsed by Javascript.
|
||||
|
||||
*Mario Caropreso + Viktor Kelemen + zackham*
|
||||
|
||||
* Fix skipping object callbacks using metadata fetched via callback chain
|
||||
inspection methods (`_*_callbacks`)
|
||||
|
||||
*Sean Walbran*
|
||||
|
||||
* Add a `fetch_multi` method to the cache stores. The method provides
|
||||
an easy to use API for fetching multiple values from the cache.
|
||||
|
||||
Example:
|
||||
|
||||
# Calculating scores is expensive, so we only do it for posts
|
||||
# that have been updated. Cache keys are automatically extracted
|
||||
# from objects that define a #cache_key method.
|
||||
scores = Rails.cache.fetch_multi(*posts) do |post|
|
||||
calculate_score(post)
|
||||
end
|
||||
|
||||
*Daniel Schierbeck*
|
||||
|
||||
Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/activesupport/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/activesupport/CHANGELOG.md) for previous changes.
|
||||
|
|
|
@ -1,13 +1 @@
|
|||
* Fixed missing line and shadow on service pages(404, 422, 500).
|
||||
|
||||
*Dmitry Korotkov*
|
||||
|
||||
* Removed repetitive th tags. Instead of them added one th tag with a colspan attribute.
|
||||
|
||||
*Sıtkı Bağdat*
|
||||
|
||||
* Added the Rails maintenance policy to the guides.
|
||||
|
||||
*Matias Korhonen*
|
||||
|
||||
Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/guides/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/guides/CHANGELOG.md) for previous changes.
|
||||
|
|
|
@ -1,312 +1 @@
|
|||
* Do not crash when `config/secrets.yml` is empty.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Set `dump_schema_after_migration` config values in production.
|
||||
|
||||
Set `config.active_record.dump_schema_after_migration` as false
|
||||
in the generated `config/environments/production.rb` file.
|
||||
|
||||
*Emil Soman*
|
||||
|
||||
* Added Thor-action for creation of migrations.
|
||||
|
||||
Fixes #13588, #12674.
|
||||
|
||||
*Gert Goet*
|
||||
|
||||
* Ensure that `bin/rails` is a file before trying to execute it.
|
||||
|
||||
Fixes #13825.
|
||||
|
||||
*bronzle*
|
||||
|
||||
* Use single quotes in generated files.
|
||||
|
||||
*Cristian Mircea Messel*, *Chulki Lee*
|
||||
|
||||
* The `Gemfile` of new applications depends on SDoc ~> 0.4.0.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* `test_help.rb` now automatically checks/maintains your test database
|
||||
schema. (Use `config.active_record.maintain_test_schema = false` to
|
||||
disable.)
|
||||
|
||||
*Jon Leighton*
|
||||
|
||||
* Configure `secrets.yml` and `database.yml` to read configuration
|
||||
from the system environment by default for production.
|
||||
|
||||
*José Valim*
|
||||
|
||||
* `config.assets.raise_runtime_errors` is set to true by default
|
||||
|
||||
This option has been introduced in
|
||||
[sprockets-rails#100][https://github.com/rails/sprockets-rails/pull/100]
|
||||
and defaults to true in new applications in development.
|
||||
|
||||
*Richard Schneeman*
|
||||
|
||||
* Generates `html` and `text` templates for mailers by default.
|
||||
|
||||
*Kassio Borges*
|
||||
|
||||
* Move `secret_key_base` from `config/initializers/secret_token.rb`
|
||||
to `config/secrets.yml`.
|
||||
|
||||
`secret_key_base` is now saved in `Rails.application.secrets.secret_key_base`
|
||||
and it fallbacks to the value of `config.secret_key_base` when it is not
|
||||
present in `config/secrets.yml`.
|
||||
|
||||
`config/initializers/secret_token.rb` is not generated by default
|
||||
in new applications.
|
||||
|
||||
*Guillermo Iguaran*
|
||||
|
||||
* Generate a new `secrets.yml` file in the `config` folder for new
|
||||
applications. By default, this file contains the application's `secret_key_base`,
|
||||
but it could also be used to store other secrets such as access keys for external
|
||||
APIs.
|
||||
|
||||
The secrets added to this file will be accessible via `Rails.application.secrets`.
|
||||
For example, with the following `secrets.yml`:
|
||||
|
||||
development:
|
||||
secret_key_base: 3b7cd727ee24e8444053437c36cc66c3
|
||||
some_api_key: SOMEKEY
|
||||
|
||||
`Rails.application.secrets.some_api_key` will return `SOMEKEY` in the development
|
||||
environment.
|
||||
|
||||
*Guillermo Iguaran*
|
||||
|
||||
* Add `ENV['DATABASE_URL']` support in `rails dbconsole`. Fixes #13320.
|
||||
|
||||
*Huiming Teo*
|
||||
|
||||
* Add `Application#message_verifier` method to return a message verifier.
|
||||
|
||||
This verifier can be used to generate and verify signed messages in the application.
|
||||
|
||||
message = Rails.application.message_verifier(:sensitive_data).generate('my sensible data')
|
||||
Rails.application.message_verifier(:sensitive_data).verify(message)
|
||||
# => 'my sensible data'
|
||||
|
||||
It is recommended not to use the same verifier for different things, so you can get different
|
||||
verifiers passing the name argument.
|
||||
|
||||
message = Rails.application.message_verifier(:cookies).generate('my sensible cookie data')
|
||||
|
||||
See the `ActiveSupport::MessageVerifier` documentation for more information.
|
||||
|
||||
*Rafael Mendonça França*
|
||||
|
||||
* The [Spring application
|
||||
preloader](https://github.com/rails/spring) is now installed
|
||||
by default for new applications. It uses the development group of
|
||||
the Gemfile, so will not be installed in production.
|
||||
|
||||
*Jon Leighton*
|
||||
|
||||
* Uses .railsrc while creating new plugin if it is available.
|
||||
Fixes #10700.
|
||||
|
||||
*Prathamesh Sonpatki*
|
||||
|
||||
* Remove turbolinks when generating a new application based on a template that skips it.
|
||||
|
||||
Example:
|
||||
|
||||
Skips turbolinks adding `add_gem_entry_filter { |gem| gem.name != "turbolinks" }`
|
||||
to the template.
|
||||
|
||||
*Lauro Caetano*
|
||||
|
||||
* Instrument an `load_config_initializer.railties` event on each load of configuration initializer
|
||||
from `config/initializers`. Subscribers should be attached before `load_config_initializers`
|
||||
initializer completed.
|
||||
|
||||
Registering subscriber examples:
|
||||
|
||||
# config/application.rb
|
||||
module RailsApp
|
||||
class Application < Rails::Application
|
||||
ActiveSupport::Notifications.subscribe('load_config_initializer.railties') do |*args|
|
||||
event = ActiveSupport::Notifications::Event.new(*args)
|
||||
puts "Loaded initializer #{event.payload[:initializer]} (#{event.duration}ms)"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# my_engine/lib/my_engine/engine.rb
|
||||
module MyEngine
|
||||
class Engine < ::Rails::Engine
|
||||
config.before_initialize do
|
||||
ActiveSupport::Notifications.subscribe('load_config_initializer.railties') do |*args|
|
||||
event = ActiveSupport::Notifications::Event.new(*args)
|
||||
puts "Loaded initializer #{event.payload[:initializer]} (#{event.duration}ms)"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
*Paul Nikitochkin*
|
||||
|
||||
* Support for Pathnames in eager load paths.
|
||||
|
||||
*Mike Pack*
|
||||
|
||||
* Fixed missing line and shadow on service pages(404, 422, 500).
|
||||
|
||||
*Dmitry Korotkov*
|
||||
|
||||
* `BACKTRACE` environment variable to show unfiltered backtraces for
|
||||
test failures.
|
||||
|
||||
Example:
|
||||
|
||||
$ BACKTRACE=1 ruby -Itest ...
|
||||
# or with rake
|
||||
$ BACKTRACE=1 bin/rake
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Removal of all javascript stuff (gems and files) when generating a new
|
||||
application using the `--skip-javascript` option.
|
||||
|
||||
*Robin Dupret*
|
||||
|
||||
* Make the application name snake cased when it contains spaces
|
||||
|
||||
The application name is used to fill the `database.yml` and
|
||||
`session_store.rb` files ; previously, if the provided name
|
||||
contained whitespaces, it led to unexpected names in these files.
|
||||
|
||||
*Robin Dupret*
|
||||
|
||||
* Added `--model-name` option to `ScaffoldControllerGenerator`.
|
||||
|
||||
*yalab*
|
||||
|
||||
* Expose MiddlewareStack#unshift to environment configuration.
|
||||
|
||||
*Ben Pickles*
|
||||
|
||||
* `rails server` will only extend the logger to output to STDOUT
|
||||
in development environment.
|
||||
|
||||
*Richard Schneeman*
|
||||
|
||||
* Don't require passing path to app before options in `rails new`
|
||||
and `rails plugin new`
|
||||
|
||||
*Piotr Sarnacki*
|
||||
|
||||
* rake notes now searches *.less files
|
||||
|
||||
*Josh Crowder*
|
||||
|
||||
* Generate nested route for namespaced controller generated using
|
||||
`rails g controller`.
|
||||
Fixes #11532.
|
||||
|
||||
Example:
|
||||
|
||||
rails g controller admin/dashboard index
|
||||
|
||||
# Before:
|
||||
get "dashboard/index"
|
||||
|
||||
# After:
|
||||
namespace :admin do
|
||||
get "dashboard/index"
|
||||
end
|
||||
|
||||
*Prathamesh Sonpatki*
|
||||
|
||||
* Fix the event name of action_dispatch requests.
|
||||
|
||||
*Rafael Mendonça França*
|
||||
|
||||
* Make `config.log_level` work with custom loggers.
|
||||
|
||||
*Max Shytikov*
|
||||
|
||||
* Changed stylesheet load order in the stylesheet manifest generator.
|
||||
Fixes #11639.
|
||||
|
||||
*Pawel Janiak*
|
||||
|
||||
* Added generated unit test for generator generator using new
|
||||
`test:generators` rake task.
|
||||
|
||||
*Josef Šimánek*
|
||||
|
||||
* Removed `update:application_controller` rake task.
|
||||
|
||||
*Josef Šimánek*
|
||||
|
||||
* Fix `rake environment` to do not eager load modules
|
||||
|
||||
*Paul Nikitochkin*
|
||||
|
||||
* Fix `rake notes` to look into `*.sass` files
|
||||
|
||||
*Yuri Artemev*
|
||||
|
||||
* Removed deprecated `Rails.application.railties.engines`.
|
||||
|
||||
*Arun Agrawal*
|
||||
|
||||
* Removed deprecated threadsafe! from Rails Config.
|
||||
|
||||
*Paul Nikitochkin*
|
||||
|
||||
* Remove deprecated `ActiveRecord::Generators::ActiveModel#update_attributes` in
|
||||
favor of `ActiveRecord::Generators::ActiveModel#update`.
|
||||
|
||||
*Vipul A M*
|
||||
|
||||
* Remove deprecated `config.whiny_nils` option.
|
||||
|
||||
*Vipul A M*
|
||||
|
||||
* Rename `commands/plugin_new.rb` to `commands/plugin.rb` and fix references
|
||||
|
||||
*Richard Schneeman*
|
||||
|
||||
* Fix `rails plugin --help` command.
|
||||
|
||||
*Richard Schneeman*
|
||||
|
||||
* Omit turbolinks configuration completely on skip_javascript generator option.
|
||||
|
||||
*Nikita Fedyashev*
|
||||
|
||||
* Removed deprecated rake tasks for running tests: `rake test:uncommitted` and
|
||||
`rake test:recent`.
|
||||
|
||||
*John Wang*
|
||||
|
||||
* Clearing autoloaded constants triggers routes reloading.
|
||||
Fixes #10685.
|
||||
|
||||
*Xavier Noria*
|
||||
|
||||
* Fixes bug with scaffold generator with `--assets=false --resource-route=false`.
|
||||
Fixes #9525.
|
||||
|
||||
*Arun Agrawal*
|
||||
|
||||
* Rails::Railtie no longer forces the Rails::Configurable module on everything
|
||||
that subclasses it. Instead, the methods from Rails::Configurable have been
|
||||
moved to class methods in Railtie and the Railtie has been made abstract.
|
||||
|
||||
*John Wang*
|
||||
|
||||
* Changes repetitive th tags to use colspan attribute in `index.html.erb` template.
|
||||
|
||||
*Sıtkı Bağdat*
|
||||
|
||||
Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/railties/CHANGELOG.md) for previous changes.
|
||||
Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/railties/CHANGELOG.md) for previous changes.
|
||||
|
|
Loading…
Reference in New Issue