Start Rails 5.1 development 🎉

This commit is contained in:
Rafael Mendonça França 2016-05-10 01:07:09 -03:00
parent 943b96c738
commit 8ecc5ab1d8
24 changed files with 101 additions and 5268 deletions

@ -11,7 +11,7 @@ gem 'mocha', '~> 0.14', require: false
gem 'rack-cache', '~> 1.2'
gem 'jquery-rails'
gem 'coffee-rails', '~> 4.1.0'
gem 'coffee-rails', github: 'rails/coffee-rails'
gem 'turbolinks', github: 'turbolinks/turbolinks-rails'
# require: false so bcrypt is loaded only when has_secure_password is used.
@ -43,14 +43,15 @@ group :job do
gem 'resque-scheduler', require: false
gem 'sidekiq', require: false
gem 'sucker_punch', require: false
gem 'delayed_job', require: false
gem 'delayed_job', require: false, github: 'collectiveidea/delayed_job'
gem 'queue_classic', github: "QueueClassic/queue_classic", branch: 'master', require: false, platforms: :ruby
gem 'sneakers', require: false
gem 'que', require: false
gem 'backburner', require: false
gem 'qu-rails', github: "bkeepers/qu", branch: "master", require: false
#TODO: add qu after it support Rails 5.1
# gem 'qu-rails', github: "bkeepers/qu", branch: "master", require: false
gem 'qu-redis', require: false
gem 'delayed_job_active_record', require: false
gem 'delayed_job_active_record', require: false, github: 'collectiveidea/delayed_job_active_record'
gem 'sequel', require: false
end

@ -7,21 +7,31 @@ GIT
pg (>= 0.17, < 0.19)
GIT
remote: git://github.com/bkeepers/qu.git
revision: d098e2657c92e89a6413bebd9c033930759c061f
branch: master
remote: git://github.com/collectiveidea/delayed_job.git
revision: 71f1d5faf934d3057abca942f0d410327bc69087
specs:
qu (0.2.0)
qu-rails (0.2.0)
qu (= 0.2.0)
railties (>= 3.2, < 5)
qu-redis (0.2.0)
qu (= 0.2.0)
redis-namespace
delayed_job (4.1.1)
activesupport (>= 3.0, < 5.1)
GIT
remote: git://github.com/collectiveidea/delayed_job_active_record.git
revision: 61e688e03b2ef4004b08de6d1e0a123fda8fffad
specs:
delayed_job_active_record (4.1.0)
activerecord (>= 3.0, < 5.1)
delayed_job (>= 3.0, < 5)
GIT
remote: git://github.com/rails/coffee-rails.git
revision: aa2e623cbda4f3c789a0a15d1f707239e68f5736
specs:
coffee-rails (4.1.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.2.x)
GIT
remote: git://github.com/sass/sass.git
revision: 6e8a053f3f1b3c58d3c7db057d7df80e8fee3752
revision: 3fda1cbe70d615e7ef96e28db4fd1f8a3ebb5505
branch: stable
specs:
sass (3.4.22)
@ -36,58 +46,58 @@ GIT
PATH
remote: .
specs:
actioncable (5.0.0.rc1)
actionpack (= 5.0.0.rc1)
actioncable (5.1.0.alpha)
actionpack (= 5.1.0.alpha)
nio4r (~> 1.2)
websocket-driver (~> 0.6.1)
actionmailer (5.0.0.rc1)
actionpack (= 5.0.0.rc1)
actionview (= 5.0.0.rc1)
activejob (= 5.0.0.rc1)
actionmailer (5.1.0.alpha)
actionpack (= 5.1.0.alpha)
actionview (= 5.1.0.alpha)
activejob (= 5.1.0.alpha)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.0.0.rc1)
actionview (= 5.0.0.rc1)
activesupport (= 5.0.0.rc1)
actionpack (5.1.0.alpha)
actionview (= 5.1.0.alpha)
activesupport (= 5.1.0.alpha)
rack (~> 2.x)
rack-test (~> 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.0.0.rc1)
activesupport (= 5.0.0.rc1)
actionview (5.1.0.alpha)
activesupport (= 5.1.0.alpha)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
activejob (5.0.0.rc1)
activesupport (= 5.0.0.rc1)
activejob (5.1.0.alpha)
activesupport (= 5.1.0.alpha)
globalid (>= 0.3.6)
activemodel (5.0.0.rc1)
activesupport (= 5.0.0.rc1)
activerecord (5.0.0.rc1)
activemodel (= 5.0.0.rc1)
activesupport (= 5.0.0.rc1)
activemodel (5.1.0.alpha)
activesupport (= 5.1.0.alpha)
activerecord (5.1.0.alpha)
activemodel (= 5.1.0.alpha)
activesupport (= 5.1.0.alpha)
arel (~> 7.0)
activesupport (5.0.0.rc1)
activesupport (5.1.0.alpha)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
rails (5.0.0.rc1)
actioncable (= 5.0.0.rc1)
actionmailer (= 5.0.0.rc1)
actionpack (= 5.0.0.rc1)
actionview (= 5.0.0.rc1)
activejob (= 5.0.0.rc1)
activemodel (= 5.0.0.rc1)
activerecord (= 5.0.0.rc1)
activesupport (= 5.0.0.rc1)
rails (5.1.0.alpha)
actioncable (= 5.1.0.alpha)
actionmailer (= 5.1.0.alpha)
actionpack (= 5.1.0.alpha)
actionview (= 5.1.0.alpha)
activejob (= 5.1.0.alpha)
activemodel (= 5.1.0.alpha)
activerecord (= 5.1.0.alpha)
activesupport (= 5.1.0.alpha)
bundler (>= 1.3.0, < 2.0)
railties (= 5.0.0.rc1)
railties (= 5.1.0.alpha)
sprockets-rails (>= 2.0.0)
railties (5.0.0.rc1)
actionpack (= 5.0.0.rc1)
activesupport (= 5.0.0.rc1)
railties (5.1.0.alpha)
actionpack (= 5.1.0.alpha)
activesupport (= 5.1.0.alpha)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
@ -109,9 +119,6 @@ GEM
bunny (2.2.2)
amq-protocol (>= 2.0.1)
byebug (8.2.5)
coffee-rails (4.1.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.1.x)
coffee-script (2.4.1)
coffee-script-source
execjs
@ -120,11 +127,6 @@ GEM
connection_pool (2.2.0)
dalli (2.7.6)
dante (0.2.0)
delayed_job (4.1.1)
activesupport (>= 3.0, < 5.0)
delayed_job_active_record (4.1.0)
activerecord (>= 3.0, < 5)
delayed_job (>= 3.0, < 5)
em-hiredis (0.3.1)
eventmachine (~> 1.0)
hiredis (~> 0.6.0)
@ -185,6 +187,12 @@ GEM
pg (0.18.4-x86-mingw32)
psych (2.0.17)
puma (3.4.0)
qu (0.2.0)
multi_json
qu-redis (0.2.0)
qu (= 0.2.0)
redis-namespace
simple_uuid
que (0.11.4)
racc (1.4.14)
rack (2.0.0.rc1)
@ -231,6 +239,7 @@ GEM
connection_pool (~> 2.2, >= 2.2.0)
redis (~> 3.2, >= 3.2.1)
sigdump (0.2.4)
simple_uuid (0.4.0)
sinatra (1.0)
rack (>= 1.0)
sneakers (2.3.5)
@ -284,10 +293,10 @@ DEPENDENCIES
bcrypt (~> 3.1.11)
benchmark-ips
byebug
coffee-rails (~> 4.1.0)
coffee-rails!
dalli (>= 2.2.1)
delayed_job
delayed_job_active_record
delayed_job!
delayed_job_active_record!
em-hiredis
faye-websocket
hiredis
@ -301,7 +310,6 @@ DEPENDENCIES
pg (>= 0.18.0)
psych (~> 2.0)
puma
qu-rails!
qu-redis
que
queue_classic!

@ -1 +1 @@
5.0.0.rc1
5.1.0.alpha

@ -1,88 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* WebSocket protocol negotiation.
Introduces an Action Cable protocol version that moves independently
of and, hopefully, more slowly than Action Cable itself. Client sockets
negotiate a protocol with the Cable server using WebSockets' native
subprotocol support:
* https://tools.ietf.org/html/rfc6455#section-1.9
* https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#Subprotocols
If they can't negotiate a compatible protocol (usually due to upgrading
the Cable server with a browser still running old JavaScript) then the
client knows to disconnect, cease retrying, and tell the app that it hit
a protocol mismatch.
This allows us to evolve the Action Cable message format, handshaking,
pings, acknowledgements, and more without breaking older clients'
expectations of server behavior.
*Daniel Rhodes*
* Pubsub: automatic stream decoding.
stream_for @room, coder: ActiveSupport::JSON do |message|
# `message` is a Ruby hash here instead of a JSON string
The `coder` must respond to `#decode`. Defaults to `coder: nil`
which skips decoding entirely.
*Jeremy Daer*
* Add ActiveSupport::Notifications to ActionCable::Channel.
*Matthew Wear*
* Safely support autoloading and class unloading, by preventing concurrent
loads, and disconnecting all cables during reload.
*Matthew Draper*
* Ensure ActionCable behaves correctly for non-string queue names.
*Jay Hayes*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Added `em_redis_connector` and `redis_connector` to
`ActionCable::SubscriptionAdapter::EventedRedis` and added `redis_connector`
to `ActionCable::SubscriptionAdapter::Redis`, so you can overwrite with your
own initializers. This is used when you want to use different-than-standard
Redis adapters, like for Makara distributed Redis.
*DHH*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* Support PostgreSQL pubsub adapter.
*Jon Moss*
* Remove EventMachine dependency.
*Matthew Draper*
* Remove Celluloid dependency.
*Mike Perham*
* Create notion of an `ActionCable::SubscriptionAdapter`.
Separate out Redis functionality into
`ActionCable::SubscriptionAdapter::Redis`, and add a
PostgreSQL adapter as well. Configuration file for
ActionCable was changed from`config/redis/cable.yml` to
`config/cable.yml`.
*Jon Moss*
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Added to Rails!
*DHH*
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/actioncable/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,141 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Disallow calling `#deliver_later` after making local modifications to
the message which would be lost when the delivery job is enqueued.
Prevents a common, hard-to-find bug like:
message = Notifier.welcome(user, foo)
message.message_id = my_generated_message_id
message.deliver_later
The message_id is silently lost! *Only the mailer arguments are passed
to the delivery job.*
This raises an exception now. Make modifications to the message within
the mailer method instead, or use a custom Active Job to manage delivery
instead of using #deliver_later.
*Jeremy Daer*
* Removes `-t` from default Sendmail arguments to match the underlying
`Mail::Sendmail` setting.
*Clayton Liggitt*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Add support for fragment caching in Action Mailer views.
*Stan Lo*
* Reset `ActionMailer::Base.deliveries` after every test in
`ActionDispatch::IntegrationTest`.
*Yves Senn*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* No changes.
## Rails 5.0.0.beta1 (December 18, 2015) ##
* `config.action_mailer.default_url_options[:protocol]` is now set to `https` if `config.force_ssl` is set to `true`.
*Andrew Kampjes*
* Add `config.action_mailer.deliver_later_queue_name` configuration to set the
mailer queue name.
*Chris McGrath*
* `assert_emails` in block form, uses the given number as expected value.
This makes the error message much easier to understand.
*Yuji Yaginuma*
* Add support for inline images in mailer previews by using an interceptor
class to convert cid: urls in image src attributes to data urls.
*Andrew White*
* Mailer preview now uses `url_for` to fix links to emails for apps running on
a subdirectory.
*Remo Mueller*
* Mailer previews no longer crash when the `mail` method wasn't called
(`NullMail`).
Fixes #19849.
*Yves Senn*
* Make sure labels and values line up in mailer previews.
*Yves Senn*
* Add `assert_enqueued_emails` and `assert_no_enqueued_emails`.
Example:
def test_emails
assert_enqueued_emails 2 do
ContactMailer.welcome.deliver_later
ContactMailer.welcome.deliver_later
end
end
def test_no_emails
assert_no_enqueued_emails do
# No emails enqueued here
end
end
*George Claghorn*
* Add `_mailer` suffix to mailers created via generator, following the same
naming convention used in controllers and jobs.
*Carlos Souza*
* Remove deprecated `*_path` helpers in email views.
*Rafael Mendonça França*
* Remove deprecated `deliver` and `deliver!` methods.
*claudiob*
* Template lookup now respects default locale and I18n fallbacks.
Given the following templates:
mailer/demo.html.erb
mailer/demo.en.html.erb
mailer/demo.pt.html.erb
Before this change, for a locale that doesn't have its associated file, the
`mailer/demo.html.erb` would be rendered even if `en` was the default locale.
Now `mailer/demo.en.html.erb` has precedence over the file without locale.
Also, it is possible to give a fallback.
mailer/demo.pt.html.erb
mailer/demo.pt-BR.html.erb
So if the locale is `pt-PT`, `mailer/demo.pt.html.erb` will be rendered given
the right I18n fallback configuration.
*Rafael Mendonça França*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/actionmailer/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/actionmailer/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,823 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* Add `ActionController#helpers` to get access to the view context at the controller
level.
*Rafael Mendonça França*
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Routing: Refactor `:action` default handling to ensure that path
parameters are not mutated during route generation.
*Andrew White*
* Add extension synonyms `yml` and `yaml` for MIME type `application/x-yaml`.
*bogdanvlviv*
* Adds support for including ActionController::Cookies in API controllers.
Previously, including the module would raise when trying to define
a `cookies` helper method. Skip calling #helper_method if it is not
defined -- if we don't have helpers, we needn't define one.
Fixes #24304
*Ryan T. Hosford*
* ETags: Introduce `Response#strong_etag=` and `#weak_etag=` and analogous
options for `fresh_when` and `stale?`. `Response#etag=` sets a weak ETag.
Strong ETags are desirable when you're serving byte-for-byte identical
responses that support Range requests, like PDFs or videos (typically
done by reproxying the response from a backend storage service).
Also desirable when fronted by some CDNs that support strong ETags
only, like Akamai.
*Jeremy Daer*
* ETags: No longer strips quotes (") from ETag values before comparing them.
Quotes are significant, part of the ETag. A quoted ETag and an unquoted
one are not the same entity.
*Jeremy Daer*
* ETags: Support `If-None-Match: *`. Rarely useful for GET requests; meant
to provide some optimistic concurrency control for PUT requests.
*Jeremy Daer*
* `ActionDispatch::ParamsParser` is deprecated and was removed from the middleware
stack. To configure the parameter parsers use `ActionDispatch::Request.parameter_parsers=`.
*tenderlove*
* When a `respond_to` collector with a block doesn't have a response, then
a `:no_content` response should be rendered. This brings the default
rendering behavior introduced by https://github.com/rails/rails/issues/19036
to controller methods employing `respond_to`.
*Justin Coyne*
* Add `ActionController::Parameters#dig` on Ruby 2.3 and greater, which
behaves the same as `Hash#dig`.
*Sean Griffin*
* Add request headers in the payload of the `start_processing.action_controller`
and `process_action.action_controller` notifications.
*Gareth du Plooy*
* Add `action_dispatch_integration_test` load hook. The hook can be used to
extend `ActionDispatch::IntegrationTest` once it has been loaded.
*Yuichiro Kaneko*
* Update default rendering policies when the controller action did
not explicitly indicate a response.
For API controllers, the implicit render always renders "204 No Content"
and does not account for any templates.
For other controllers, the following conditions are checked:
First, if a template exists for the controller action, it is rendered.
This template lookup takes into account the action name, locales, format,
variant, template handlers, etc. (see `render` for details).
Second, if other templates exist for the controller action but is not in
the right format (or variant, etc.), an `ActionController::UnknownFormat`
is raised. The list of available templates is assumed to be a complete
enumeration of all the possible formats (or variants, etc.); that is,
having only HTML and JSON templates indicate that the controller action is
not meant to handle XML requests.
Third, if the current request is an "interactive" browser request (the user
navigated here by entering the URL in the address bar, submitting a form,
clicking on a link, etc. as opposed to an XHR or non-browser API request),
`ActionView::UnknownFormat` is raised to display a helpful error
message.
Finally, it falls back to the same "204 No Content" behavior as API controllers.
*Godfrey Chan*, *Jon Moss*, *Kasper Timm Hansen*, *Mike Clark*, *Matthew Draper*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Add "application/gzip" as a default mime type.
*Mehmet Emin İNAÇ*
* Add request encoding and response parsing to integration tests.
What previously was:
```ruby
require 'test_helper'
class ApiTest < ActionDispatch::IntegrationTest
test 'creates articles' do
assert_difference -> { Article.count } do
post articles_path(format: :json),
params: { article: { title: 'Ahoy!' } }.to_json,
headers: { 'Content-Type' => 'application/json' }
end
assert_equal({ 'id' => Article.last.id, 'title' => 'Ahoy!' }, JSON.parse(response.body))
end
end
```
Can now be written as:
```ruby
require 'test_helper'
class ApiTest < ActionDispatch::IntegrationTest
test 'creates articles' do
assert_difference -> { Article.count } do
post articles_path, params: { article: { title: 'Ahoy!' } }, as: :json
end
assert_equal({ 'id' => Article.last.id, 'title' => 'Ahoy!' }, response.parsed_body)
end
end
```
Passing `as: :json` to integration test request helpers will set the format,
content type and encode the parameters as JSON.
Then on the response side, `parsed_body` will parse the body according to the
content type the response has.
Currently JSON is the only supported MIME type. Add your own with
`ActionDispatch::IntegrationTest.register_encoder`.
*Kasper Timm Hansen*
* Add "image/svg+xml" as a default mime type.
*DHH*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* Add `-g` and `-c` options to `bin/rails routes`. These options return the url `name`, `verb` and
`path` field that match the pattern or match a specific controller.
Deprecate `CONTROLLER` env variable in `bin/rails routes`.
See #18902.
*Anton Davydov*, *Vipul A M*
* Response etags to always be weak: Prefixes 'W/' to value returned by
`ActionDispatch::Http::Cache::Response#etag=`, such that etags set in
`fresh_when` and `stale?` are weak.
Fixes #17556.
*Abhishek Yadav*
* Provide the name of HTTP Status code in assertions.
*Sean Collins*
* More explicit error message when running `rake routes`. `CONTROLLER` argument
can now be supplied in different ways:
`Rails::WelcomeController`, `Rails::Welcome`, `rails/welcome`.
Fixes #22918.
*Edouard Chin*
* Allow `ActionController::Parameters` instances as an argument to URL
helper methods. An `ArgumentError` will be raised if the passed parameters
are not secure.
Fixes #22832.
*Prathamesh Sonpatki*
* Add option for per-form CSRF tokens.
*Greg Ose*, *Ben Toews*
* Fix `ActionController::Parameters#convert_parameters_to_hashes` to return filtered
or unfiltered values based on from where it is called, `to_h` or `to_unsafe_h`
respectively.
Fixes #22841.
*Prathamesh Sonpatki*
* Add `ActionController::Parameters#include?`
*Justin Coyne*
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Deprecate `redirect_to :back` in favor of `redirect_back`, which accepts a
required `fallback_location` argument, thus eliminating the possibility of a
`RedirectBackError`.
*Derek Prior*
* Add `redirect_back` method to `ActionController::Redirecting` to provide a
way to safely redirect to the `HTTP_REFERER` if it is present, falling back
to a provided redirect otherwise.
*Derek Prior*
* `ActionController::TestCase` will be moved to its own gem in Rails 5.1.
With the speed improvements made to `ActionDispatch::IntegrationTest` we no
longer need to keep two separate code bases for testing controllers. In
Rails 5.1 `ActionController::TestCase` will be deprecated and moved into a
gem outside of Rails source.
This is a documentation deprecation so that going forward new tests will use
`ActionDispatch::IntegrationTest` instead of `ActionController::TestCase`.
*Eileen M. Uchitelle*
* Add a `response_format` option to `ActionDispatch::DebugExceptions`
to configure the format of the response when errors occur in
development mode.
If `response_format` is `:default` the debug info will be rendered
in an HTML page. In the other hand, if the provided value is `:api`
the debug info will be rendered in the original response format.
*Jorge Bejar*
* Change the `protect_from_forgery` prepend default to `false`.
Per this comment
https://github.com/rails/rails/pull/18334#issuecomment-69234050 we want
`protect_from_forgery` to default to `prepend: false`.
`protect_from_forgery` will now be inserted into the callback chain at the
point it is called in your application. This is useful for cases where you
want to `protect_from_forgery` after you perform required authentication
callbacks or other callbacks that are required to run after forgery protection.
If you want `protect_from_forgery` callbacks to always run first, regardless of
position they are called in your application then you can add `prepend: true`
to your `protect_from_forgery` call.
Example:
```ruby
protect_from_forgery prepend: true
```
*Eileen M. Uchitelle*
* In url_for, never append a question mark to the URL when the query string
is empty anyway. (It used to do that when called like `url_for(controller:
'x', action: 'y', q: {})`.)
*Paul Grayson*
* Catch invalid UTF-8 querystring values and respond with BadRequest
Check querystring params for invalid UTF-8 characters, and raise an
ActionController::BadRequest error if present. Previously these strings
would typically trigger errors further down the stack.
*Grey Baker*
* Parse RSS/ATOM responses as XML, not HTML.
*Alexander Kaupanin*
* Show helpful message in `BadRequest` exceptions due to invalid path
parameter encodings.
Fixes #21923.
*Agis Anastasopoulos*
* Add the ability of returning arbitrary headers to `ActionDispatch::Static`.
Now ActionDispatch::Static can accept HTTP headers so that developers
will have control of returning arbitrary headers like
'Access-Control-Allow-Origin' when a response is delivered. They can be
configured with `#config`:
Example:
config.public_file_server.headers = {
"Cache-Control" => "public, max-age=60",
"Access-Control-Allow-Origin" => "http://rubyonrails.org"
}
*Yuki Nishijima*
* Allow multiple `root` routes in same scope level. Example:
Example:
root 'blog#show', constraints: ->(req) { Hostname.blog_site?(req.host) }
root 'landing#show'
*Rafael Sales*
* Fix regression in mounted engine named routes generation for app deployed to
a subdirectory. `relative_url_root` was prepended to the path twice (e.g.
"/subdir/subdir/engine_path" instead of "/subdir/engine_path")
Fixes #20920. Fixes #21459.
*Matthew Erhard*
* `ActionDispatch::Response#new` no longer applies default headers. If you want
default headers applied to the response object, then call
`ActionDispatch::Response.create`. This change only impacts people who are
directly constructing an `ActionDispatch::Response` object.
* Accessing mime types via constants like `Mime::HTML` is deprecated. Please
change code like this:
Mime::HTML
To this:
Mime[:html]
This change is so that Rails will not manage a list of constants, and fixes
an issue where if a type isn't registered you could possibly get the wrong
object.
`Mime[:html]` is available in older versions of Rails, too, so you can
safely change libraries and plugins and maintain compatibility with
multiple versions of Rails.
* `url_for` does not modify its arguments when generating polymorphic URLs.
*Bernerd Schaefer*
* Make it easier to opt in to `config.force_ssl` and `config.ssl_options` by
making them less dangerous to try and easier to disable.
SSL redirect:
* Move `:host` and `:port` options within `redirect: { … }`. Deprecate.
* Introduce `:status` and `:body` to customize the redirect response.
The 301 permanent default makes it difficult to test the redirect and
back out of it since browsers remember the 301. Test with a 302 or 307
instead, then switch to 301 once you're confident that all is well.
HTTP Strict Transport Security (HSTS):
* Shorter max-age. Shorten the default max-age from 1 year to 180 days,
the low end for https://www.ssllabs.com/ssltest/ grading and greater
than the 18-week minimum to qualify for browser preload lists.
* Disabling HSTS. Setting `hsts: false` now sets `hsts { expires: 0 }`
instead of omitting the header. Omitting does nothing to disable HSTS
since browsers hang on to your previous settings until they expire.
Sending `{ hsts: { expires: 0 }}` flushes out old browser settings and
actually disables HSTS:
http://tools.ietf.org/html/rfc6797#section-6.1.1
* HSTS Preload. Introduce `preload: true` to set the `preload` flag,
indicating that your site may be included in browser preload lists,
including Chrome, Firefox, Safari, IE11, and Edge. Submit your site:
https://hstspreload.appspot.com
*Jeremy Daer*
* Update `ActionController::TestSession#fetch` to behave more like
`ActionDispatch::Request::Session#fetch` when using non-string keys.
*Jeremy Friesen*
* Using strings or symbols for middleware class names is deprecated. Convert
things like this:
middleware.use "Foo::Bar"
to this:
middleware.use Foo::Bar
* `ActionController::TestSession` now accepts a default value as well as
a block for generating a default value based off the key provided.
This fixes calls to `session#fetch` in `ApplicationController` instances that
take more two arguments or a block from raising `ArgumentError: wrong
number of arguments (2 for 1)` when performing controller tests.
*Matthew Gerrior*
* Fix `ActionController::Parameters#fetch` overwriting `KeyError` returned by
default block.
*Jonas Schuber Erlandsson*, *Roque Pinel*
* `ActionController::Parameters` no longer inherits from
`HashWithIndifferentAccess`
Inheriting from `HashWithIndifferentAccess` allowed users to call any
enumerable methods on `Parameters` object, resulting in a risk of losing the
`permitted?` status or even getting back a pure `Hash` object instead of
a `Parameters` object with proper sanitization.
By not inheriting from `HashWithIndifferentAccess`, we are able to make
sure that all methods that are defined in `Parameters` object will return
a proper `Parameters` object with a correct `permitted?` flag.
*Prem Sichanugrist*
* Replaced `ActiveSupport::Concurrency::Latch` with `Concurrent::CountDownLatch`
from the concurrent-ruby gem.
*Jerry D'Antonio*
* Add ability to filter parameters based on parent keys.
# matches {credit_card: {code: "xxxx"}}
# doesn't match {file: { code: "xxxx"}}
config.filter_parameters += [ "credit_card.code" ]
See #13897.
*Guillaume Malette*
* Deprecate passing first parameter as `Hash` and default status code for `head` method.
*Mehmet Emin İNAÇ*
* Adds`Rack::Utils::ParameterTypeError` and `Rack::Utils::InvalidParameterError`
to the rescue_responses hash in `ExceptionWrapper` (Rack recommends
integrators serve 400s for both of these).
*Grey Baker*
* Add support for API only apps.
`ActionController::API` is added as a replacement of
`ActionController::Base` for this kind of applications.
*Santiago Pastorino*, *Jorge Bejar*
* Remove `assigns` and `assert_template`. Both methods have been extracted
into a gem at https://github.com/rails/rails-controller-testing.
See #18950.
*Alan Guo Xiang Tan*
* `FileHandler` and `Static` middleware initializers accept `index` argument
to configure the directory index file name. Defaults to `index` (as in
`index.html`).
See #20017.
*Eliot Sykes*
* Deprecate `:nothing` option for `render` method.
*Mehmet Emin İNAÇ*
* Fix `rake routes` not showing the right format when
nesting multiple routes.
See #18373.
*Ravil Bayramgalin*
* Add ability to override default form builder for a controller.
class AdminController < ApplicationController
default_form_builder AdminFormBuilder
end
*Kevin McPhillips*
* For actions with no corresponding templates, render `head :no_content`
instead of raising an error. This allows for slimmer API controller
methods that simply work, without needing further instructions.
See #19036.
*Stephen Bussey*
* Provide friendlier access to request variants.
request.variant = :phone
request.variant.phone? # true
request.variant.tablet? # false
request.variant = [:phone, :tablet]
request.variant.phone? # true
request.variant.desktop? # false
request.variant.any?(:phone, :desktop) # true
request.variant.any?(:desktop, :watch) # false
*George Claghorn*
* Fix regression where a gzip file response would have a Content-type,
even when it was a 304 status code.
See #19271.
*Kohei Suzuki*
* Fix handling of empty `X_FORWARDED_HOST` header in `raw_host_with_port`.
Previously, an empty `X_FORWARDED_HOST` header would cause
`Actiondispatch::Http:URL.raw_host_with_port` to return `nil`, causing
`Actiondispatch::Http:URL.host` to raise a `NoMethodError`.
*Adam Forsyth*
* Allow `Bearer` as token-keyword in `Authorization-Header`.
Additionally to `Token`, the keyword `Bearer` is acceptable as a keyword
for the auth-token. The `Bearer` keyword is described in the original
OAuth RFC and used in libraries like Angular-JWT.
See #19094.
*Peter Schröder*
* Drop request class from `RouteSet` constructor.
If you would like to use a custom request class, please subclass and implement
the `request_class` method.
*tenderlove@ruby-lang.org*
* Fallback to `ENV['RAILS_RELATIVE_URL_ROOT']` in `url_for`.
Fixed an issue where the `RAILS_RELATIVE_URL_ROOT` environment variable is not
prepended to the path when `url_for` is called. If `SCRIPT_NAME` (used by Rack)
is set, it takes precedence.
Fixes #5122.
*Yasyf Mohamedali*
* Partitioning of routes is now done when the routes are being drawn. This
helps to decrease the time spent filtering the routes during the first request.
*Guo Xiang Tan*
* Fix regression in functional tests. Responses should have default headers
assigned.
See #18423.
*Jeremy Kemper*, *Yves Senn*
* Deprecate `AbstractController#skip_action_callback` in favor of individual skip_callback methods
(which can be made to raise an error if no callback was removed).
*Iain Beeston*
* Alias the `ActionDispatch::Request#uuid` method to `ActionDispatch::Request#request_id`.
Due to implementation, `config.log_tags = [:request_id]` also works in substitute
for `config.log_tags = [:uuid]`.
*David Ilizarov*
* Change filter on /rails/info/routes to use an actual path regexp from rails
and not approximate javascript version. Oniguruma supports much more
extensive list of features than javascript regexp engine.
Fixes #18402.
*Ravil Bayramgalin*
* Non-string authenticity tokens do not raise NoMethodError when decoding
the masked token.
*Ville Lautanala*
* Add `http_cache_forever` to Action Controller, so we can cache a response
that never gets expired.
*arthurnn*
* `ActionController#translate` supports symbols as shortcuts.
When a shortcut is given it also performs the lookup without the action
name.
*Max Melentiev*
* Expand `ActionController::ConditionalGet#fresh_when` and `stale?` to also
accept a collection of records as the first argument, so that the
following code can be written in a shorter form.
# Before
def index
@articles = Article.all
fresh_when(etag: @articles, last_modified: @articles.maximum(:updated_at))
end
# After
def index
@articles = Article.all
fresh_when(@articles)
end
*claudiob*
* Explicitly ignored wildcard verbs when searching for HEAD routes before fallback
Fixes an issue where a mounted rack app at root would intercept the HEAD
request causing an incorrect behavior during the fall back to GET requests.
Example:
draw do
get '/home' => 'test#index'
mount rack_app, at: '/'
end
head '/home'
assert_response :success
In this case, a HEAD request runs through the routes the first time and fails
to match anything. Then, it runs through the list with the fallback and matches
`get '/home'`. The original behavior would match the rack app in the first pass.
*Terence Sun*
* Migrating xhr methods to keyword arguments syntax
in `ActionController::TestCase` and `ActionDispatch::Integration`
Old syntax:
xhr :get, :create, params: { id: 1 }
New syntax example:
get :create, params: { id: 1 }, xhr: true
*Kir Shatrov*
* Migrating to keyword arguments syntax in `ActionController::TestCase` and
`ActionDispatch::Integration` HTTP request methods.
Example:
post :create, params: { y: x }, session: { a: 'b' }
get :view, params: { id: 1 }
get :view, params: { id: 1 }, format: :json
*Kir Shatrov*
* Preserve default url options when generating URLs.
Fixes an issue that would cause `default_url_options` to be lost when
generating URLs with fewer positional arguments than parameters in the
route definition.
*Tekin Suleyman*
* Deprecate `*_via_redirect` integration test methods.
Use `follow_redirect!` manually after the request call for the same behavior.
*Aditya Kapoor*
* Add `ActionController::Renderer` to render arbitrary templates
outside controller actions.
Its functionality is accessible through class methods `render` and
`renderer` of `ActionController::Base`.
*Ravil Bayramgalin*
* Support `:assigns` option when rendering with controllers/mailers.
*Ravil Bayramgalin*
* Default headers, removed in controller actions, are no longer reapplied on
the test response.
*Jonas Baumann*
* Deprecate all `*_filter` callbacks in favor of `*_action` callbacks.
*Rafael Mendonça França*
* Allow you to pass `prepend: false` to `protect_from_forgery` to have the
verification callback appended instead of prepended to the chain.
This allows you to let the verification step depend on prior callbacks.
Example:
class ApplicationController < ActionController::Base
before_action :authenticate
protect_from_forgery prepend: false, unless: -> { @authenticated_by.oauth? }
private
def authenticate
if oauth_request?
# authenticate with oauth
@authenticated_by = 'oauth'.inquiry
else
# authenticate with cookies
@authenticated_by = 'cookie'.inquiry
end
end
end
*Josef Šimánek*
* Remove `ActionController::HideActions`.
*Ravil Bayramgalin*
* Remove `respond_to`/`respond_with` placeholder methods, this functionality
has been extracted to the `responders` gem.
*Carlos Antonio da Silva*
* Remove deprecated assertion files.
*Rafael Mendonça França*
* Remove deprecated usage of string keys in URL helpers.
*Rafael Mendonça França*
* Remove deprecated `only_path` option on `*_path` helpers.
*Rafael Mendonça França*
* Remove deprecated `NamedRouteCollection#helpers`.
*Rafael Mendonça França*
* Remove deprecated support to define routes with `:to` option that doesn't contain `#`.
*Rafael Mendonça França*
* Remove deprecated `ActionDispatch::Response#to_ary`.
*Rafael Mendonça França*
* Remove deprecated `ActionDispatch::Request#deep_munge`.
*Rafael Mendonça França*
* Remove deprecated `ActionDispatch::Http::Parameters#symbolized_path_parameters`.
*Rafael Mendonça França*
* Remove deprecated option `use_route` in controller tests.
*Rafael Mendonça França*
* Ensure `append_info_to_payload` is called even if an exception is raised.
Fixes an issue where when an exception is raised in the request the additional
payload data is not available.
See #14903.
*Dieter Komendera*, *Margus Pärt*
* Correctly rely on the response's status code to handle calls to `head`.
*Robin Dupret*
* Using `head` method returns empty response_body instead
of returning a single space " ".
The old behavior was added as a workaround for a bug in an early
version of Safari, where the HTTP headers are not returned correctly
if the response body has a 0-length. This is been fixed since and
the workaround is no longer necessary.
Fixes #18253.
*Prathamesh Sonpatki*
* Fix how polymorphic routes works with objects that implement `to_model`.
*Travis Grathwell*
* Stop converting empty arrays in `params` to `nil`.
This behavior was introduced in response to CVE-2012-2660, CVE-2012-2694
and CVE-2013-0155
ActiveRecord now issues a safe query when passing an empty array into
a where clause, so there is no longer a need to defend against this type
of input (any nils are still stripped from the array).
*Chris Sinjakli*
* Fixed usage of optional scopes in url helpers.
*Alex Robbin*
* Fixed handling of positional url helper arguments when `format: false`.
Fixes #17819.
*Andrew White*, *Tatiana Soukiassian*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/actionpack/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/actionpack/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,343 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* `date_select` helper `:with_css_classes` option now accepts a hash of strings
for `:year`, `:month`, `:day`, `:hour`, `:minute`, `:second` that will extend
the select type with the given css class value.
```erb
<%= f.date_select :birthday, with_css_classes: { month: "my-month", year: "my-year" } %>
```
```html
<select id="user_birthday_3i" name="user[birthday(3i)]"></select>
<select id="user_birthday_2i" name="user[birthday(2i)]" class="my-month"></select>
<select id="user_birthday_1i" name="user[birthday(1i)]" class="my-year"></select>
```
*Matthias Neumayr*
* Add `to_sentence` helper that is a HTML-safe aware version of `Array#to_sentence`.
*Neil Matatall*
* Deprecate `datetime_field` and `datetime_field_tag` helpers.
Datetime input type was removed from HTML specification.
One can use `datetime_local_field` and `datetime_local_field_tag` instead.
*Wojciech Wnętrzak*
* Added log "Rendering ...", when starting to render a template to log that
we have started rendering something. This helps to easily identify the origin
of queries in the log whether they came from controller or views.
*Vipul A M and Prem Sichanugrist*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Collection rendering can cache and fetch multiple partials at once.
Collections rendered as:
```ruby
<%= render partial: 'notifications/notification', collection: @notifications, as: :notification, cached: true %>
```
will read several partials from cache at once. The templates in the collection
that haven't been cached already will automatically be written to cache. Works
great alongside individual template fragment caching. For instance if the
template the collection renders is cached like:
```ruby
# notifications/_notification.html.erb
<% cache notification do %>
<%# ... %>
<% end %>
```
Then any collection renders shares that cache when attempting to read multiple
ones at once.
*Kasper Timm Hansen*
* Add support for nested hashes/arrays to `:params` option of `button_to` helper.
*James Coleman*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* Fix stripping the digest from the automatically generated img tag alt
attribute when assets are handled by Sprockets >=3.0.
*Bart de Water*
* Create a new `ActiveSupport::SafeBuffer` instance when `content_for` is flushed.
Fixes #19890.
*Yoong Kang Lim*
* Fix `collection_radio_buttons` hidden_field name and make it appear
before the actual input radio tags to make the real value override
the hidden when passed.
Fixes #22773.
*Santiago Pastorino*
* `ActionView::TestCase::Controller#params` returns an instance of
`ActionController::Parameters`.
*Justin Coyne*
* Fix regression in `submit_tag` when a symbol is used as label argument.
*Yuuji Yaginuma*
## Rails 5.0.0.beta1 (December 18, 2015) ##
* `I18n.translate` helper will wrap the missing translation keys
in a <span> tag only if `debug_missing_translation` configuration
be true. Default value is `true`. For example in `application.rb`:
# in order to turn off missing key wrapping
config.action_view.debug_missing_translation = false
*Sameer Rahmani*
* Respect value of `:object` if `:object` is false when rendering.
Fixes #22260.
*Yuichiro Kaneko*
* Generate `week_field` input values using a 1-based index and not a 0-based index
as per the W3 spec: http://www.w3.org/TR/html-markup/datatypes.html#form.data.week
*Christoph Geschwind*
* Allow `host` option in `javascript_include_tag` and `stylesheet_link_tag` helpers
*Grzegorz Witek*
* Restrict `url_for :back` to valid, non-JavaScript URLs. GH#14444
*Damien Burke*
* Allow `date_select` helper selected option to accept hash like the default options.
*Lecky Lao*
* Collection input propagates input's `id` to the label's `for` attribute when
using html options as the last element of collection.
*Vasiliy Ermolovich*
* Add a `hidden_field` on the `collection_radio_buttons` to avoid raising an error
when the only input on the form is the `collection_radio_buttons`.
*Mauro George*
* `url_for` does not modify its arguments when generating polymorphic URLs.
*Bernerd Schaefer*
* `number_to_currency` and `number_with_delimiter` now accept a custom `delimiter_pattern` option
to handle placement of delimiter, to support currency formats like INR.
Example:
number_to_currency(1230000, delimiter_pattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/, unit: '₹', format: "%u %n")
# => '₹ 12,30,000.00'
*Vipul A M*
* Make `disable_with` the default behavior for submit tags. Disables the
button on submit to prevent double submits.
*Justin Schiff*
* Add a break_sequence option to word_wrap so you can specify a custom break.
*Mauricio Gomez*
* Add wildcard matching to explicit dependencies.
Turns:
```erb
<% # Template Dependency: recordings/threads/events/subscribers_changed %>
<% # Template Dependency: recordings/threads/events/completed %>
<% # Template Dependency: recordings/threads/events/uncompleted %>
```
Into:
```erb
<% # Template Dependency: recordings/threads/events/* %>
```
*Kasper Timm Hansen*
* Allow defining explicit collection caching using a `# Template Collection: ...`
directive inside templates.
*Dov Murik*
* Asset helpers raise `ArgumentError` when `nil` is passed as a source.
*Anton Kolomiychuk*
* Always attach the template digest to the cache key for collection caching
even when `virtual_path` is not available from the view context.
Which could happen if the rendering was done directly in the controller
and not in a template.
Fixes #20535.
*Roque Pinel*
* Improve detection of partial templates eligible for collection caching,
now allowing multi-line comments at the beginning of the template file.
*Dov Murik*
* Raise an `ArgumentError` when a false value for `include_blank` is passed to a
required select field (to comply with the HTML5 spec).
*Grey Baker*
* Do not put partial name to `local_assigns` when rendering without
an object or a collection.
*Henrik Nygren*
* Remove `:rescue_format` option for `translate` helper since it's no longer
supported by I18n.
*Bernard Potocki*
* `translate` should handle `raise` flag correctly in case of both main and default
translation is missing.
Fixes #19967.
*Bernard Potocki*
* Load the `default_form_builder` from the controller on initialization, which overrides
the global config if it is present.
*Kevin McPhillips*
* Accept lambda as `child_index` option in `fields_for` method.
*Karol Galanciak*
* `translate` allows `default: [[]]` again for a default value of `[]`.
Fixes #19640.
*Adam Prescott*
* `translate` should accept nils as members of the `:default`
parameter without raising a translation missing error.
Fixes #19419.
*Justin Coyne*
* `number_to_percentage` does not crash with `Float::NAN` or `Float::INFINITY`
as input when `precision: 0` is used.
Fixes #19227.
*Yves Senn*
* Fixed the translation helper method to accept different default values types
besides String.
*Ulisses Almeida*
* Fixed a dependency tracker bug that caused template dependencies not
count layouts as dependencies for partials.
*Juho Leinonen*
* Extracted `ActionView::Helpers::RecordTagHelper` to external gem
(`record_tag_helper`) and added removal notices.
*Todd Bealmear*
* Allow to pass a string value to `size` option in `image_tag` and `video_tag`.
This makes the behavior more consistent with `width` or `height` options.
*Mehdi Lahmam*
* Partial template name does no more have to be a valid Ruby identifier.
There used to be a naming rule that the partial name should start with
underscore, and should be followed by any combination of letters, numbers
and underscores.
But now we can give our partials any name starting with underscore, such as
_🍔.html.erb.
*Akira Matsuda*
* Change the default template handler from `ERB` to `Raw`.
Files without a template handler in their extension will be rendered using the raw
handler instead of ERB. The raw handler does not flag the rendered text as html safe,
so if your application rendered plain JS or HTML files before, you'll have to replace:
```erb
<%= render '/common/analytics.js' %>
```
with either
```erb
<%= raw render '/common/analytics.js' %>
```
or
```erb
<%= render('/common/analytics.js').html_safe %>
```
*Rafael Mendonça França*
* Remove deprecated `AbstractController::Base::parent_prefixes`.
*Rafael Mendonça França*
* Default translations that have a lower precedence than a html safe default,
but are not themselves safe, should not be marked as html_safe.
*Justin Coyne*
* Make possible to use blocks with short version of `render "partial"` helper.
*Nikolay Shebanov*
* Add a `hidden_field` on the `file_field` to avoid raising an error when the only
input on the form is the `file_field`.
*Mauro George*
* Add an explicit error message, in `ActionView::PartialRenderer` for partial
`rendering`, when the value of option `as` has invalid characters.
*Angelo Capilleri*
* Allow entries without a link tag in `AtomFeedHelper`.
*Daniel Gomez de Souza*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/actionview/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/actionview/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,184 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Enable class reloading prior to job dispatch, and ensure Active Record
connections are returned to the pool when jobs are run in separate threads.
*Matthew Draper*
* Tune the async adapter for low-footprint dev/test usage. Use a single
thread pool for all queues and limit to 0 to #CPU total threads, down from
2 to 10*#CPU per queue.
*Jeremy Daer*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Change the default adapter from inline to async. It's a better default as tests will then not mistakenly
come to rely on behavior happening synchronously. This is especially important with things like jobs kicked off
in Active Record lifecycle callbacks.
*DHH*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* No changes.
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Fixed serializing `:at` option for `assert_enqueued_with`
and `assert_performed_with`.
*Wojciech Wnętrzak*
* Support passing array to `assert_enqueued_jobs` in `:only` option.
*Wojciech Wnętrzak*
* Add job priorities to Active Job.
*wvengen*
* Implement a simple `AsyncJob` processor and associated `AsyncAdapter` that
queue jobs to a `concurrent-ruby` thread pool.
*Jerry D'Antonio*
* Implement `provider_job_id` for `queue_classic` adapter. This requires the
latest, currently unreleased, version of queue_classic.
*Yves Senn*
* `assert_enqueued_with` and `assert_performed_with` now returns the matched
job instance for further assertions.
*Jean Boussier*
* Include `I18n.locale` into job serialization/deserialization and use it around
`perform`.
Fixes #20799.
*Johannes Opper*
* Allow `DelayedJob`, `Sidekiq`, `qu`, and `que` to report the job id back to
`ActiveJob::Base` as `provider_job_id`.
Fixes #18821.
*Kevin Deisz*, *Jeroen van Baarsen*
* `assert_enqueued_jobs` and `assert_performed_jobs` in block form use the
given number as expected value. This makes the error message much easier to
understand.
*y-yagi*
* A generated job now inherits from `app/jobs/application_job.rb` by default.
*Jeroen van Baarsen*
* Add ability to configure the queue adapter on a per job basis.
Now different jobs can have different queue adapters without conflicting with
each other.
Example:
class EmailJob < ActiveJob::Base
self.queue_adapter = :sidekiq
end
class ImageProcessingJob < ActiveJob::Base
self.queue_adapter = :delayed_job
end
*tamird*
* Add an `:only` option to `perform_enqueued_jobs` to filter jobs based on
type.
This allows specific jobs to be tested, while preventing others from
being performed unnecessarily.
Example:
def test_hello_job
assert_performed_jobs 1, only: HelloJob do
HelloJob.perform_later('jeremy')
LoggingJob.perform_later
end
end
An array may also be specified, to support testing multiple jobs.
Example:
def test_hello_and_logging_jobs
assert_nothing_raised do
assert_performed_jobs 2, only: [HelloJob, LoggingJob] do
HelloJob.perform_later('jeremy')
LoggingJob.perform_later('stewie')
RescueJob.perform_later('david')
end
end
end
Fixes #18802.
*Michael Ryan*
* Allow keyword arguments to be used with Active Job.
Fixes #18741.
*Sean Griffin*
* Add `:only` option to `assert_enqueued_jobs`, to check the number of times
a specific kind of job is enqueued.
Example:
def test_logging_job
assert_enqueued_jobs 1, only: LoggingJob do
LoggingJob.perform_later
HelloJob.perform_later('jeremy')
end
end
*George Claghorn*
* `ActiveJob::Base.deserialize` delegates to the job class.
Since `ActiveJob::Base#deserialize` can be overridden by subclasses (like
`ActiveJob::Base#serialize`) this allows jobs to attach arbitrary metadata
when they get serialized and read it back when they get performed.
Example:
class DeliverWebhookJob < ActiveJob::Base
def serialize
super.merge('attempt_number' => (@attempt_number || 0) + 1)
end
def deserialize(job_data)
super
@attempt_number = job_data['attempt_number']
end
rescue_from(TimeoutError) do |exception|
raise exception if @attempt_number > 5
retry_job(wait: 10)
end
end
*Isaac Seymour*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activejob/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/activejob/CHANGELOG.md) for previous changes.

@ -1,6 +1,7 @@
require 'rake/testtask'
ACTIVEJOB_ADAPTERS = %w(async inline delayed_job qu que queue_classic resque sidekiq sneakers sucker_punch backburner test)
#TODO: add qu back to the list after it support Rails 5.1
ACTIVEJOB_ADAPTERS = %w(async inline delayed_job que queue_classic resque sidekiq sneakers sucker_punch backburner test)
ACTIVEJOB_ADAPTERS -= %w(queue_classic) if defined?(JRUBY_VERSION)
task default: :test

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,156 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Allow passing record being validated to the message proc to generate
customized error messages for that object using I18n helper.
*Prathamesh Sonpatki*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* No changes.
## Rails 5.0.0.beta2 (February 01, 2016) ##
* No changes.
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Validate multiple contexts on `valid?` and `invalid?` at once.
Example:
class Person
include ActiveModel::Validations
attr_reader :name, :title
validates_presence_of :name, on: :create
validates_presence_of :title, on: :update
end
person = Person.new
person.valid?([:create, :update]) # => false
person.errors.messages # => {:name=>["can't be blank"], :title=>["can't be blank"]}
*Dmitry Polushkin*
* Add case_sensitive option for confirmation validator in models.
*Akshat Sharma*
* Ensure `method_missing` is called for methods passed to
`ActiveModel::Serialization#serializable_hash` that don't exist.
*Jay Elaraj*
* Remove `ActiveModel::Serializers::Xml` from core.
*Zachary Scott*
* Add `ActiveModel::Dirty#[attr_name]_previously_changed?` and
`ActiveModel::Dirty#[attr_name]_previous_change` to improve access
to recorded changes after the model has been saved.
It makes the dirty-attributes query methods consistent before and after
saving.
*Fernando Tapia Rico*
* Deprecate the `:tokenizer` option for `validates_length_of`, in favor of
plain Ruby.
*Sean Griffin*
* Deprecate `ActiveModel::Errors#add_on_empty` and `ActiveModel::Errors#add_on_blank`
with no replacement.
*Wojciech Wnętrzak*
* Deprecate `ActiveModel::Errors#get`, `ActiveModel::Errors#set` and
`ActiveModel::Errors#[]=` methods that have inconsistent behavior.
*Wojciech Wnętrzak*
* Allow symbol as values for `tokenize` of `LengthValidator`.
*Kensuke Naito*
* Assigning an unknown attribute key to an `ActiveModel` instance during initialization
will now raise `ActiveModel::AttributeAssignment::UnknownAttributeError` instead of
`NoMethodError`.
Example:
User.new(foo: 'some value')
# => ActiveModel::AttributeAssignment::UnknownAttributeError: unknown attribute 'foo' for User.
*Eugene Gilburg*
* Extracted `ActiveRecord::AttributeAssignment` to `ActiveModel::AttributeAssignment`
allowing to use it for any object as an includable module.
Example:
class Cat
include ActiveModel::AttributeAssignment
attr_accessor :name, :status
end
cat = Cat.new
cat.assign_attributes(name: "Gorby", status: "yawning")
cat.name # => 'Gorby'
cat.status # => 'yawning'
cat.assign_attributes(status: "sleeping")
cat.name # => 'Gorby'
cat.status # => 'sleeping'
*Bogdan Gusiev*
* Add `ActiveModel::Errors#details`
To be able to return type of used validator, one can now call `details`
on errors instance.
Example:
class User < ActiveRecord::Base
validates :name, presence: true
end
user = User.new; user.valid?; user.errors.details
=> {name: [{error: :blank}]}
*Wojciech Wnętrzak*
* Change `validates_acceptance_of` to accept `true` by default besides `'1'`.
The default for `validates_acceptance_of` is now `'1'` and `true`.
In the past, only `"1"` was the default and you were required to pass
`accept: true` separately.
*mokhan*
* Remove deprecated `ActiveModel::Dirty#reset_#{attribute}` and
`ActiveModel::Dirty#reset_changes`.
*Rafael Mendonça França*
* Change the way in which callback chains can be halted.
The preferred method to halt a callback chain from now on is to explicitly
`throw(:abort)`.
In the past, returning `false` in an Active Model `before_` callback had
the side effect of halting the callback chain.
This is not recommended anymore and, depending on the value of the
`ActiveSupport.halt_callback_chains_on_return_false` option, will
either not work at all or display a deprecation warning.
*claudiob*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activemodel/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/activemodel/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

File diff suppressed because it is too large Load Diff

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,765 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* `ActiveSupport::Duration` supports weeks and hours.
[1.hour.inspect, 1.hour.value, 1.hour.parts]
# => ["3600 seconds", 3600, [[:seconds, 3600]]] # Before
# => ["1 hour", 3600, [[:hours, 1]]] # After
[1.week.inspect, 1.week.value, 1.week.parts]
# => ["7 days", 604800, [[:days, 7]]] # Before
# => ["1 week", 604800, [[:weeks, 1]]] # After
This brings us into closer conformance with ISO8601 and relieves some
astonishment about getting `1.hour.inspect # => 3600 seconds`.
Compatibility: The duration's `value` remains the same, so apps using
durations are oblivious to the new time periods. Apps, libraries, and
plugins that work with the internal `parts` hash will need to broaden
their time period handling to cover hours & weeks.
*Andrey Novikov*
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Time zones: Ensure that the UTC offset reflects DST changes that occurred
since the app started. Removes UTC offset caching, reducing performance,
but this is still relatively quick and isn't in any hot paths.
*Alexey Shein*
* Make `getlocal` and `getutc` always return instances of `Time` for
`ActiveSupport::TimeWithZone` and `DateTime`. This eliminates a possible
stack level too deep error in `to_time` where `ActiveSupport::TimeWithZone`
was wrapping a `DateTime` instance. As a consequence of this the internal
time value in `ActiveSupport::TimeWithZone` is now always an instance of
`Time` in the UTC timezone, whether that's as the UTC time directly or
a representation of the local time in the timezone. There should be no
consequences of this internal change and if there are it's a bug due to
leaky abstractions.
*Andrew White*
* Add `DateTime#subsec` to return the fraction of a second as a `Rational`.
*Andrew White*
* Add additional aliases for `DateTime#utc` to mirror the ones on
`ActiveSupport::TimeWithZone` and `Time`.
*Andrew White*
* Add `DateTime#localtime` to return an instance of `Time` in the system's
local timezone. Also aliased to `getlocal`.
*Andrew White*, *Yuichiro Kaneko*
* Add `Time#sec_fraction` to return the fraction of a second as a `Rational`.
*Andrew White*
* Add `ActiveSupport.to_time_preserves_timezone` config option to control
how `to_time` handles timezones. In Ruby 2.4+ the behavior will change
from converting to the local system timezone, to preserving the timezone
of the receiver. This config option defaults to false so that apps made
with earlier versions of Rails are not affected when upgrading, e.g:
>> ENV['TZ'] = 'US/Eastern'
>> "2016-04-23T10:23:12.000Z".to_time
=> "2016-04-23T06:23:12.000-04:00"
>> ActiveSupport.to_time_preserves_timezone = true
>> "2016-04-23T10:23:12.000Z".to_time
=> "2016-04-23T10:23:12.000Z"
Fixes #24617.
*Andrew White*
* `ActiveSupport::TimeZone.country_zones(country_code)` looks up the
country's time zones by its two-letter ISO3166 country code, e.g.
>> ActiveSupport::TimeZone.country_zones(:jp).map(&:to_s)
=> ["(GMT+09:00) Osaka"]
>> ActiveSupport::TimeZone.country_zones(:uy).map(&:to_s)
=> ["(GMT-03:00) Montevideo"]
*Andrey Novikov*
* `Array#sum` compat with Ruby 2.4's native method.
Ruby 2.4 introduces `Array#sum`, but it only supports numeric elements,
breaking our `Enumerable#sum` which supports arbitrary `Object#+`.
To fix, override `Array#sum` with our compatible implementation.
Native Ruby 2.4:
%w[ a b ].sum
# => TypeError: String can't be coerced into Fixnum
With `Enumerable#sum` shim:
%w[ a b ].sum
# => 'ab'
We tried shimming the fast path and falling back to the compatible path
if it fails, but that ends up slower even in simple cases due to the cost
of exception handling. Our only choice is to override the native `Array#sum`
with our `Enumerable#sum`.
*Jeremy Daer*
* `ActiveSupport::Duration` supports ISO8601 formatting and parsing.
ActiveSupport::Duration.parse('P3Y6M4DT12H30M5S')
# => 3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 seconds
(3.years + 3.days).iso8601
# => "P3Y3D"
Inspired by Arnau Siches' [ISO8601 gem](https://github.com/arnau/ISO8601/)
and rewritten by Andrey Novikov with suggestions from Andrew White. Test
data from the ISO8601 gem redistributed under MIT license.
(Will be used to support the PostgreSQL interval data type.)
*Andrey Novikov*, *Arnau Siches*, *Andrew White*
* `Cache#fetch(key, force: true)` forces a cache miss, so it must be called
with a block to provide a new value to cache. Fetching with `force: true`
but without a block now raises ArgumentError.
cache.fetch('key', force: true) # => ArgumentError
*Santosh Wadghule*
* Fix behavior of JSON encoding for `Exception`.
*namusyaka*
* Make `number_to_phone` format number with regexp pattern.
number_to_phone(18812345678, pattern: /(\d{3})(\d{4})(\d{4})/)
# => 188-1234-5678
*Pan Gaoyong*
* Match `String#to_time`'s behaviour to that of ruby's implementation for edge cases.
`nil` is now returned instead of the current date if the string provided does
contain time information, but none that is used to build the `Time` object.
Fixes #22958.
*Siim Liiser*
* Rely on the native DateTime#<=> implementation to handle non-datetime like
objects instead of returning `nil` ourselves. This restores the ability
of `DateTime` instances to be compared with a `Numeric` that represents an
astronomical julian day number.
Fixes #24228.
*Andrew White*
* Add `String#upcase_first` method.
*Glauco Custódio*, *bogdanvlviv*
* Prevent `Marshal.load` from looping infinitely when trying to autoload a constant
which resolves to a different name.
*Olek Janiszewski*
* Deprecate `Module.local_constants`. Please use `Module.constants(false)` instead.
*Yuichiro Kaneko*
* Publish `ActiveSupport::Executor` and `ActiveSupport::Reloader` APIs to allow
components and libraries to manage, and participate in, the execution of
application code, and the application reloading process.
*Matthew Draper*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Deprecate arguments on `assert_nothing_raised`.
`assert_nothing_raised` does not assert the arguments that have been passed
in (usually a specific exception class) since the method only yields the
block. So as not to confuse the users that the arguments have meaning, they
are being deprecated.
*Tara Scherner de la Fuente*
* Make `benchmark('something', silence: true)` actually work.
*DHH*
* Add `#on_weekday?` method to `Date`, `Time`, and `DateTime`.
`#on_weekday?` returns `true` if the receiving date/time does not fall on a Saturday
or Sunday.
*Vipul A M*
* Add `Array#second_to_last` and `Array#third_to_last` methods.
*Brian Christian*
* Fix regression in `Hash#dig` for HashWithIndifferentAccess.
*Jon Moss*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* Change `number_to_currency` behavior for checking negativity.
Used `to_f.negative` instead of using `to_f.phase` for checking negativity
of a number in number_to_currency helper.
This change works same for all cases except when number is "-0.0".
-0.0.to_f.negative? => false
-0.0.to_f.phase? => 3.14
This change reverts changes from https://github.com/rails/rails/pull/6512.
But it should be acceptable as we could not find any currency which
supports negative zeros.
*Prathamesh Sonpatki*, *Rafael Mendonça França*
* Match `HashWithIndifferentAccess#default`'s behaviour with `Hash#default`.
*David Cornu*
* Adds `:exception_object` key to `ActiveSupport::Notifications::Instrumenter`
payload when an exception is raised.
Adds new key/value pair to payload when an exception is raised:
e.g. `:exception_object => #<RuntimeError: FAIL>`.
*Ryan T. Hosford*
* Support extended grapheme clusters and UAX 29.
*Adam Roben*
* Add petabyte and exabyte numeric conversion.
*Akshay Vishnoi*
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Add thread_m/cattr_accessor/reader/writer suite of methods for declaring class and module variables that live per-thread.
This makes it easy to declare per-thread globals that are encapsulated. Note: This is a sharp edge. A wild proliferation
of globals is A Bad Thing. But like other sharp tools, when it's right, it's right.
Here's an example of a simple event tracking system where the object being tracked needs not pass a creator that it
doesn't need itself along:
module Current
thread_mattr_accessor :account
thread_mattr_accessor :user
def self.reset() self.account = self.user = nil end
end
class ApplicationController < ActionController::Base
before_action :set_current
after_action { Current.reset }
private
def set_current
Current.account = Account.find(params[:account_id])
Current.user = Current.account.users.find(params[:user_id])
end
end
class MessagesController < ApplicationController
def create
@message = Message.create!(message_params)
end
end
class Message < ApplicationRecord
has_many :events
after_create :track_created
private
def track_created
events.create! origin: self, action: :create
end
end
class Event < ApplicationRecord
belongs_to :creator, class_name: 'User'
before_validation { self.creator ||= Current.user }
end
*DHH*
* Deprecated `Module#qualified_const_` in favour of the builtin Module#const_
methods.
*Genadi Samokovarov*
* Deprecate passing string to define callback.
*Yuichiro Kaneko*
* `ActiveSupport::Cache::Store#namespaced_key`,
`ActiveSupport::Cache::MemCachedStore#escape_key`, and
`ActiveSupport::Cache::FileStore#key_file_path`
are deprecated and replaced with `normalize_key` that now calls `super`.
`ActiveSupport::Cache::LocaleCache#set_cache_value` is deprecated and replaced with `write_cache_value`.
*Michael Grosser*
* Implements an evented file watcher to asynchronously detect changes in the
application source code, routes, locales, etc.
This watcher is disabled by default, applications my enable it in the configuration:
# config/environments/development.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
This feature depends on the [listen](https://github.com/guard/listen) gem:
group :development do
gem 'listen', '~> 3.0.5'
end
*Puneet Agarwal* and *Xavier Noria*
* Added `Time.days_in_year` to return the number of days in the given year, or the
current year if no argument is provided.
*Jon Pascoe*
* Updated `parameterize` to preserve the case of a string, optionally.
Example:
parameterize("Donald E. Knuth", separator: '_') # => "donald_e_knuth"
parameterize("Donald E. Knuth", preserve_case: true) # => "Donald-E-Knuth"
*Swaathi Kakarla*
* `HashWithIndifferentAccess.new` respects the default value or proc on objects
that respond to `#to_hash`. `.new_from_hash_copying_default` simply invokes `.new`.
All calls to `.new_from_hash_copying_default` are replaced with `.new`.
*Gordon Chan*
* Change Integer#year to return a Fixnum instead of a Float to improve
consistency.
Integer#years returned a Float while the rest of the accompanying methods
(days, weeks, months, etc.) return a Fixnum.
Before:
1.year # => 31557600.0
After:
1.year # => 31557600
*Konstantinos Rousis*
* Handle invalid UTF-8 strings when HTML escaping.
Use `ActiveSupport::Multibyte::Unicode.tidy_bytes` to handle invalid UTF-8
strings in `ERB::Util.unwrapped_html_escape` and `ERB::Util.html_escape_once`.
Prevents user-entered input passed from a querystring into a form field from
causing invalid byte sequence errors.
*Grey Baker*
* Update `ActiveSupport::Multibyte::Chars#slice!` to return `nil` if the
arguments are out of bounds, to mirror the behavior of `String#slice!`
*Gourav Tiwari*
* Fix `number_to_human` so that 999999999 rounds to "1 Billion" instead of
"1000 Million".
*Max Jacobson*
* Fix `ActiveSupport::Deprecation#deprecate_methods` to report using the
current deprecator instance, where applicable.
*Brandon Dunne*
* `Cache#fetch` instrumentation marks whether it was a `:hit`.
*Robin Clowers*
* `assert_difference` and `assert_no_difference` now returns the result of the
yielded block.
Example:
post = assert_difference -> { Post.count }, 1 do
Post.create
end
*Lucas Mazza*
* Short-circuit `blank?` on date and time values since they are never blank.
Fixes #21657.
*Andrew White*
* Replaced deprecated `ThreadSafe::Cache` with its successor `Concurrent::Map` now that
the thread_safe gem has been merged into concurrent-ruby.
*Jerry D'Antonio*
* Updated Unicode version to 8.0.0
*Anshul Sharma*
* `number_to_currency` and `number_with_delimiter` now accept custom `delimiter_pattern` option
to handle placement of delimiter, to support currency formats like INR
Example:
number_to_currency(1230000, delimiter_pattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/, unit: '₹', format: "%u %n")
# => '₹ 12,30,000.00'
*Vipul A M*
* Deprecate `:prefix` option of `number_to_human_size` with no replacement.
*Jean Boussier*
* Fix `TimeWithZone#eql?` to properly handle `TimeWithZone` created from `DateTime`:
twz = DateTime.now.in_time_zone
twz.eql?(twz.dup) => true
Fixes #14178.
*Roque Pinel*
* ActiveSupport::HashWithIndifferentAccess `select` and `reject` will now return
enumerator if called without block.
Fixes #20095.
*Bernard Potocki*
* Removed `ActiveSupport::Concurrency::Latch`, superseded by `Concurrent::CountDownLatch`
from the concurrent-ruby gem.
*Jerry D'Antonio*
* Fix not calling `#default` on `HashWithIndifferentAccess#to_hash` when only
`default_proc` is set, which could raise.
*Simon Eskildsen*
* Fix setting `default_proc` on `HashWithIndifferentAccess#dup`.
*Simon Eskildsen*
* Fix a range of values for parameters of the Time#change.
*Nikolay Kondratyev*
* Add `Enumerable#pluck` to get the same values from arrays as from ActiveRecord
associations.
Fixes #20339.
*Kevin Deisz*
* Add a bang version to `ActiveSupport::OrderedOptions` get methods which will raise
an `KeyError` if the value is `.blank?`.
Before:
if (slack_url = Rails.application.secrets.slack_url).present?
# Do something worthwhile
else
# Raise as important secret password is not specified
end
After:
slack_url = Rails.application.secrets.slack_url!
*Aditya Sanghi*, *Gaurish Sharma*
* Remove deprecated `Class#superclass_delegating_accessor`.
Use `Class#class_attribute` instead.
*Akshay Vishnoi*
* Patch `Delegator` to work with `#try`.
Fixes #5790.
*Nate Smith*
* Add `Integer#positive?` and `Integer#negative?` query methods
in the vein of `Fixnum#zero?`.
This makes it nicer to do things like `bunch_of_numbers.select(&:positive?)`.
*DHH*
* Encoding `ActiveSupport::TimeWithZone` to YAML now preserves the timezone information.
Fixes #9183.
*Andrew White*
* Added `ActiveSupport::TimeZone#strptime` to allow parsing times as if
from a given timezone.
*Paul A Jungwirth*
* `ActiveSupport::Callbacks#skip_callback` now raises an `ArgumentError` if
an unrecognized callback is removed.
*Iain Beeston*
* Added `ActiveSupport::ArrayInquirer` and `Array#inquiry`.
Wrapping an array in an `ArrayInquirer` gives a friendlier way to check its
contents:
variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet])
variants.phone? # => true
variants.tablet? # => true
variants.desktop? # => false
variants.any?(:phone, :tablet) # => true
variants.any?(:phone, :desktop) # => true
variants.any?(:desktop, :watch) # => false
`Array#inquiry` is a shortcut for wrapping the receiving array in an
`ArrayInquirer`.
*George Claghorn*
* Deprecate `alias_method_chain` in favour of `Module#prepend` introduced in
Ruby 2.0.
*Kir Shatrov*
* Added `#without` on `Enumerable` and `Array` to return a copy of an
enumerable without the specified elements.
*Todd Bealmear*
* Fixed a problem where `String#truncate_words` would get stuck with a complex
string.
*Henrik Nygren*
* Fixed a roundtrip problem with `AS::SafeBuffer` where primitive-like strings
will be dumped as primitives:
Before:
YAML.load ActiveSupport::SafeBuffer.new("Hello").to_yaml # => "Hello"
YAML.load ActiveSupport::SafeBuffer.new("true").to_yaml # => true
YAML.load ActiveSupport::SafeBuffer.new("false").to_yaml # => false
YAML.load ActiveSupport::SafeBuffer.new("1").to_yaml # => 1
YAML.load ActiveSupport::SafeBuffer.new("1.1").to_yaml # => 1.1
After:
YAML.load ActiveSupport::SafeBuffer.new("Hello").to_yaml # => "Hello"
YAML.load ActiveSupport::SafeBuffer.new("true").to_yaml # => "true"
YAML.load ActiveSupport::SafeBuffer.new("false").to_yaml # => "false"
YAML.load ActiveSupport::SafeBuffer.new("1").to_yaml # => "1"
YAML.load ActiveSupport::SafeBuffer.new("1.1").to_yaml # => "1.1"
*Godfrey Chan*
* Enable `number_to_percentage` to keep the number's precision by allowing
`:precision` to be `nil`.
*Jack Xu*
* `config_accessor` became a private method, as with Ruby's `attr_accessor`.
*Akira Matsuda*
* `AS::Testing::TimeHelpers#travel_to` now changes `DateTime.now` as well as
`Time.now` and `Date.today`.
*Yuki Nishijima*
* Add `file_fixture` to `ActiveSupport::TestCase`.
It provides a simple mechanism to access sample files in your test cases.
By default file fixtures are stored in `test/fixtures/files`. This can be
configured per test-case using the `file_fixture_path` class attribute.
*Yves Senn*
* Return value of yielded block in `File.atomic_write`.
*Ian Ker-Seymer*
* Duplicate frozen array when assigning it to a `HashWithIndifferentAccess` so
that it doesn't raise a `RuntimeError` when calling `map!` on it in `convert_value`.
Fixes #18550.
*Aditya Kapoor*
* Add missing time zone definitions for Russian Federation and sync them
with `zone.tab` file from tzdata version 2014j (latest).
*Andrey Novikov*
* Add `SecureRandom.base58` for generation of random base58 strings.
*Matthew Draper*, *Guillermo Iguaran*
* Add `#prev_day` and `#next_day` counterparts to `#yesterday` and
`#tomorrow` for `Date`, `Time`, and `DateTime`.
*George Claghorn*
* Add `same_time` option to `#next_week` and `#prev_week` for `Date`, `Time`,
and `DateTime`.
*George Claghorn*
* Add `#on_weekend?`, `#next_weekday`, `#prev_weekday` methods to `Date`,
`Time`, and `DateTime`.
`#on_weekend?` returns `true` if the receiving date/time falls on a Saturday
or Sunday.
`#next_weekday` returns a new date/time representing the next day that does
not fall on a Saturday or Sunday.
`#prev_weekday` returns a new date/time representing the previous day that
does not fall on a Saturday or Sunday.
*George Claghorn*
* Change the default test order from `:sorted` to `:random`.
*Rafael Mendonça França*
* Remove deprecated `ActiveSupport::JSON::Encoding::CircularReferenceError`.
*Rafael Mendonça França*
* Remove deprecated methods `ActiveSupport::JSON::Encoding.encode_big_decimal_as_string=`
and `ActiveSupport::JSON::Encoding.encode_big_decimal_as_string`.
*Rafael Mendonça França*
* Remove deprecated `ActiveSupport::SafeBuffer#prepend`.
*Rafael Mendonça França*
* Remove deprecated methods at `Kernel`.
`silence_stderr`, `silence_stream`, `capture` and `quietly`.
*Rafael Mendonça França*
* Remove deprecated `active_support/core_ext/big_decimal/yaml_conversions`
file.
*Rafael Mendonça França*
* Remove deprecated methods `ActiveSupport::Cache::Store.instrument` and
`ActiveSupport::Cache::Store.instrument=`.
*Rafael Mendonça França*
* Change the way in which callback chains can be halted.
The preferred method to halt a callback chain from now on is to explicitly
`throw(:abort)`.
In the past, callbacks could only be halted by explicitly providing a
terminator and by having a callback match the conditions of the terminator.
* Add `ActiveSupport.halt_callback_chains_on_return_false`
Setting `ActiveSupport.halt_callback_chains_on_return_false`
to `true` will let an app support the deprecated way of halting Active Record,
and Active Model callback chains by returning `false`.
Setting the value to `false` will tell the app to ignore any `false` value
returned by those callbacks, and only halt the chain upon `throw(:abort)`.
When the configuration option is missing, its value is `true`, so older apps
ported to Rails 5.0 will not break (but display a deprecation warning).
For new Rails 5.0 apps, its value is set to `false` in an initializer, so
these apps will support the new behavior by default.
*claudiob*, *Roque Pinel*
* Changes arguments and default value of CallbackChain's `:terminator` option
Chains of callbacks defined without an explicit `:terminator` option will
now be halted as soon as a `before_` callback throws `:abort`.
Chains of callbacks defined with a `:terminator` option will maintain their
existing behavior of halting as soon as a `before_` callback matches the
terminator's expectation.
*claudiob*
* Deprecate `MissingSourceFile` in favor of `LoadError`.
`MissingSourceFile` was just an alias to `LoadError` and was not being
raised inside the framework.
*Rafael Mendonça França*
* Add support for error dispatcher classes in `ActiveSupport::Rescuable`.
Now it acts closer to Ruby's rescue.
Example:
class BaseController < ApplicationController
module ErrorDispatcher
def self.===(other)
Exception === other && other.respond_to?(:status)
end
end
rescue_from ErrorDispatcher do |error|
render status: error.status, json: { error: error.to_s }
end
end
*Genadi Samokovarov*
* Add `#verified` and `#valid_message?` methods to `ActiveSupport::MessageVerifier`
Previously, the only way to decode a message with `ActiveSupport::MessageVerifier`
was to use `#verify`, which would raise an exception on invalid messages. Now
`#verified` can also be used, which returns `nil` on messages that cannot be
decoded.
Previously, there was no way to check if a message's format was valid without
attempting to decode it. `#valid_message?` is a boolean convenience method that
checks whether the message is valid without actually decoding it.
*Logan Leger*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activesupport/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/activesupport/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -1,53 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Update example of passing a proc to `:message` option for validating records.
This behavior was recently changed in [Pull Request #24199](https://github.com/rails/rails/pull/24119) to
pass the object being validated as first argument to the `:message` proc,
instead of the key of the field being validated.
*Prathamesh Sonpatki*
* Added new guide: Action Cable Overview.
*David Kuhta*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* No changes.
## Rails 5.0.0.beta2 (February 01, 2016) ##
* No changes.
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Add code of conduct to contributing guide.
*Jon Moss*
* New section in Configuring: Configuring Active Job.
*Eliot Sykes*
* New section in Active Record Association Basics: Single Table Inheritance.
*Andrey Nering*
* New section in Active Record Querying: Understanding The Method Chaining.
*Andrey Nering*
* New section in Configuring: Search Engines Indexing.
*Andrey Nering*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/guides/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/guides/CHANGELOG.md) for previous changes.

@ -1,529 +1,2 @@
## Rails 5.0.0.rc1 (May 06, 2016) ##
* No changes.
## Rails 5.0.0.beta4 (April 27, 2016) ##
* Add `config/initializers/to_time_preserves_timezone.rb`, which tells
Active Support to preserve the receiver's timezone when calling `to_time`.
This matches the new behavior that will be part of Ruby 2.4.
Fixes #24617.
*Andrew White*
* Make `rails restart` command work with Puma by passing the restart command
which Puma can use to restart rails server.
*Prathamesh Sonpatki*
* The application generator writes a new file `config/spring.rb`, which tells
Spring to watch additional common files.
*Xavier Noria*
* The tasks in the rails task namespace is deprecated in favor of app namespace.
(e.g. `rails:update` and `rails:template` tasks is renamed to `app:update` and `app:template`.)
*Ryo Hashimoto*
* Enable HSTS with IncludeSudomains header for new applications.
*Egor Homakov*, *Prathamesh Sonpatki*
## Rails 5.0.0.beta3 (February 24, 2016) ##
* Alias `rake` with `rails_command` in the Rails Application Templates API
following Rails 5 convention of preferring "rails" to "rake" to run tasks.
*claudiob*
* Generate applications with an option to log to STDOUT in production
using the environment variable `RAILS_LOG_TO_STDOUT`.
*Richard Schneeman*
* Change fail fast of `bin/rails test` interrupts run on error.
*Yuji Yaginuma*
* The application generator supports `--skip-listen` to opt-out of features
that depend on the listen gem. As of this writing they are the evented file
system monitor and the async plugin for spring.
* The Gemfiles of new applications include spring-watcher-listen on Linux and
Mac OS X (unless `--skip-spring`).
*Xavier Noria*
* New applications are generated with the evented file system monitor enabled
on Linux and Mac OS X.
*Xavier Noria*
* Add dummy files for apple-touch-icon.png and apple-touch-icon.png.
See #23427.
*Alexey Zabelin*
## Rails 5.0.0.beta2 (February 01, 2016) ##
* Add `after_bundle` callbacks in Rails plugin templates. Useful for allowing
templates to perform actions that are dependent upon `bundle install`.
*Ryan Manuel*
* Bring back `TEST=` env for `rake test` task.
*Yves Senn*
* Specify log file names or all logs to clear `rake log:clear`
Specify which logs to clear when using the `rake log:clear` task, e.g. `rake log:clear LOGS=test,staging`
Clear all logs from log/*.log e.g. `rake log:clear LOGS=all`
By default `rake log:clear` clears standard environment log files i.e. 'development,test,production'
*Pramod Shinde*
* Fix using `add_source` with a block after using `gem` in a custom generator.
*Will Fisher*
## Rails 5.0.0.beta1 (December 18, 2015) ##
* Newly generated plugins get a `README.md` in Markdown.
*Yuji Yaginuma*
* The generated config file for the development environment includes a new
config line, commented out, showing how to enable the evented file watcher.
*Xavier Noria*
* `config.debug_exception_response_format` configures the format used
in responses when errors occur in development mode.
Set `config.debug_exception_response_format` to render an HTML page with
debug info (using the value `:default`) or render debug info preserving
the response format (using the value `:api`).
*Jorge Bejar*
* Fix setting exit status code for rake test tasks. The exit status code
was not set when tests were fired with `rake`. Now, it is being set and it matches
behavior of running tests via `rails` command (`rails test`), so no matter if
`rake test` or `rails test` command is used the exit code will be set.
*Arkadiusz Fal*
* Add Command infrastructure to replace rake.
Also move `rake dev:cache` to new infrastructure. You'll need to use
`rails dev:cache` to toggle development caching from now on.
*Chuck Callebs*
* Allow use of `minitest-rails` gem with Rails test runner.
Fixes #22455.
*Chris Kottom*
* Add `bin/test` script to rails plugin.
`bin/test` can use the same API as `bin/rails test`.
*Yuji Yaginuma*
* Make `static_index` part of the `config.public_file_server` config and
call it `config.public_file_server.index_name`.
*Yuki Nishijima*
* Deprecate `config.serve_static_files` in favor of `config.public_file_server.enabled`.
Unifies the static asset options under `config.public_file_server`.
To upgrade, replace occurrences of:
```
config.serve_static_files = # false or true
```
in your environment files, with:
```
config.public_file_server.enabled = # false or true
```
*Kasper Timm Hansen*
* Deprecate `config.static_cache_control` in favor of
`config.public_file_server.headers`.
To upgrade, replace occurrences of:
```
config.static_cache_control = 'public, max-age=60'
```
in your environment files, with:
```
config.public_file_server.headers = {
'Cache-Control' => 'public, max-age=60'
}
```
`config.public_file_server.headers` can set arbitrary headers, sent along when
a response is delivered.
*Yuki Nishijima*
* Route generators are now idempotent.
Running generators several times no longer require you to cleanup routes.rb.
*Thiago Pinto*
* Allow passing an environment to `config_for`.
*Simon Eskildsen*
* Allow `rake stats` to account for rake tasks in lib/tasks.
*Kevin Deisz*
* Added javascript to update the URL on mailer previews with the currently
selected email format. Reloading the page now keeps you on your selected
format rather than going back to the default html version.
*James Kerr*
* Add fail fast to `bin/rails test`.
Adding `--fail-fast` or `-f` when running tests will interrupt the run on
the first failure:
```
# Running:
................................................S......E
ArgumentError: Wups! Bet you didn't expect this!
test/models/bunny_test.rb:19:in `block in <class:BunnyTest>'
bin/rails test test/models/bunny_test.rb:18
....................................F
This failed
bin/rails test test/models/bunny_test.rb:14
Interrupted. Exiting...
Finished in 0.051427s, 1808.3872 runs/s, 1769.4972 assertions/s.
```
Note that any unexpected errors don't abort the run.
*Kasper Timm Hansen*
* Add inline output to `bin/rails test`.
Any failures or errors (and skips if running in verbose mode) are output
during a test run:
```
# Running:
.....S..........................................F
This failed
bin/rails test test/models/bunny_test.rb:14
.................................E
ArgumentError: Wups! Bet you didn't expect this!
test/models/bunny_test.rb:19:in `block in <class:BunnyTest>'
bin/rails test test/models/bunny_test.rb:18
....................
Finished in 0.069708s, 1477.6019 runs/s, 1448.9106 assertions/s.
```
Output can be deferred to after a run with the `--defer-output` option.
*Kasper Timm Hansen*
* Fix displaying mailer previews on non local requests when config
`config.action_mailer.show_previews` is set.
*Wojciech Wnętrzak*
* `rails server` will now honour the `PORT` environment variable
*David Cornu*
* Plugins generated using `rails plugin new` are now generated with the
version number set to 0.1.0.
*Daniel Morris*
* `I18n.load_path` is now reloaded under development so there's no need to
restart the server to make new locale files available. Also, I18n will no
longer raise for deleted locale files.
*Kir Shatrov*
* Add `bin/update` script to update development environment automatically.
*Mehmet Emin İNAÇ*
* Fix STATS_DIRECTORIES already defined warning when running rake from within
the top level directory of an engine that has a test app.
Fixes #20510.
*Ersin Akinci*
* Make enabling or disabling caching in development mode possible with
`rake dev:cache`.
Running `rake dev:cache` will create or remove tmp/caching-dev.txt. When this
file exists `config.action_controller.perform_caching` will be set to true in
config/environments/development.rb.
Additionally, a server can be started with either `--dev-caching` or
`--no-dev-caching` included to toggle caching on startup.
*Jussi Mertanen*, *Chuck Callebs*
* Add a `--api` option in order to generate plugins that can be added
inside an API application.
*Robin Dupret*
* Fix `NoMethodError` when generating a scaffold inside a full engine.
*Yuji Yaginuma*
* Adding support for passing a block to the `add_source` action of a custom generator.
*Mike Dalton*, *Hirofumi Wakasugi*
* `assert_file` now understands paths with special characters
(eg. `v0.1.4~alpha+nightly`).
*Diego Carrion*
* Remove ContentLength middleware from the defaults. If you want it, just
add it as a middleware in your config.
*Egg McMuffin*
* Make it possible to customize the executable inside rerun snippets.
*Yves Senn*
* Add support for API only apps.
Middleware stack was slimmed down and it has only the needed
middleware for API apps & generators generates the right files,
folders and configurations.
*Santiago Pastorino*, *Jorge Bejar*
* Make generated scaffold functional tests work inside engines.
*Yuji Yaginuma*
* Generate a `.keep` file in the `tmp` folder by default as many scripts
assume the existence of this folder and most would fail if it is absent.
See #20299.
*Yoong Kang Lim*, *Sunny Juneja*
* `config.static_index` configures directory `index.html` filename
Set `config.static_index` to serve a static directory index file not named
`index`. E.g. to serve `main.html` instead of `index.html` for directory
requests, set `config.static_index` to `"main"`.
*Eliot Sykes*
* `bin/setup` uses built-in rake tasks (`log:clear`, `tmp:clear`).
*Mohnish Thallavajhula*
* Fix mailer previews with attachments by using the mail gem's own API to
locate the first part of the correct mime type.
Fixes #14435.
*Andrew White*
* Remove sqlite support from `rails dbconsole`.
*Andrew White*
* Rename `railties/bin` to `railties/exe` to match the new Bundler executables
convention.
*Islam Wazery*
* Print `bundle install` output in `rails new` as soon as it's available.
Running `rails new` will now print the output of `bundle install` as
it is available, instead of waiting until all gems finish installing.
*Max Holder*
* Respect `pluralize_table_names` when generating fixture file.
Fixes #19519.
*Yuji Yaginuma*
* Add a new-line to the end of route method generated code.
We need to add a `\n`, because we cannot have two routes
in the same line.
*arthurnn*
* Add `rake initializers`.
This task prints out all defined initializers in the order they are invoked
by Rails. This is helpful for debugging issues related to the initialization
process.
*Naoto Kaneko*
* Created rake restart task. Restarts your Rails app by touching the
`tmp/restart.txt`.
See #18876.
*Hyonjee Joo*
* Add `config/initializers/active_record_belongs_to_required_by_default.rb`.
Newly generated Rails apps have a new initializer called
`active_record_belongs_to_required_by_default.rb` which sets the value of
the configuration option `config.active_record.belongs_to_required_by_default`
to `true` when ActiveRecord is not skipped.
As a result, new Rails apps require `belongs_to` association on model
to be valid.
This initializer is *not* added when running `rake rails:update`, so
old apps ported to Rails 5 will work without any change.
*Josef Šimánek*
* `delete` operations in configurations are run last in order to eliminate
'No such middleware' errors when `insert_before` or `insert_after` are added
after the `delete` operation for the middleware being deleted.
Fixes #16433.
*Guo Xiang Tan*
* Newly generated applications get a `README.md` in Markdown.
*Xavier Noria*
* Remove the documentation tasks `doc:app`, `doc:rails`, and `doc:guides`.
*Xavier Noria*
* Force generated routes to be inserted into `config/routes.rb`.
*Andrew White*
* Don't remove all line endings from `config/routes.rb` when revoking scaffold.
Fixes #15913.
*Andrew White*
* Rename `--skip-test-unit` option to `--skip-test` in app generator
*Melanie Gilman*
* Add the `method_source` gem to the default Gemfile for apps.
*Sean Griffin*
* Drop old test locations from `rake stats`:
- test/functional
- test/unit
*Ravil Bayramgalin*
* Update `rake stats` to correctly count declarative tests
as methods in `_test.rb` files.
*Ravil Bayramgalin*
* Remove deprecated `test:all` and `test:all:db` tasks.
*Rafael Mendonça França*
* Remove deprecated `Rails::Rack::LogTailer`.
*Rafael Mendonça França*
* Remove deprecated `RAILS_CACHE` constant.
*Rafael Mendonça França*
* Remove deprecated `serve_static_assets` configuration.
*Rafael Mendonça França*
* Use local variables in `_form.html.erb` partial generated by scaffold.
*Andrew Kozlov*
* Add `config/initializers/callback_terminator.rb`.
Newly generated Rails apps have a new initializer called
`callback_terminator.rb` which sets the value of the configuration option
`ActiveSupport.halt_callback_chains_on_return_false` to `false`.
As a result, new Rails apps do not halt Active Record and Active Model
callback chains when a callback returns `false`; only when they are
explicitly halted with `throw(:abort)`.
The terminator is *not* added when running `rake rails:update`, so returning
`false` will still work on old apps ported to Rails 5, displaying a
deprecation warning to prompt users to update their code to the new syntax.
*claudiob*
* Generated fixtures won't use the id when generated with references attributes.
*Pablo Olmos de Aguilera Corradini*
* Add `--skip-action-mailer` option to the app generator.
*claudiob*
* Autoload any second level directories called `app/*/concerns`.
*Alex Robbin*
Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/railties/CHANGELOG.md) for previous changes.
Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/railties/CHANGELOG.md) for previous changes.

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

@ -6,9 +6,9 @@ def self.gem_version
module VERSION
MAJOR = 5
MINOR = 0
MINOR = 1
TINY = 0
PRE = "rc1"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end