1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Start Rails 6.0 development!!!

🎉🎉🎉
This commit is contained in:
Rafael Mendonça França 2018-01-30 18:51:17 -05:00
parent bec74e1d4a
commit 1c383df324
27 changed files with 89 additions and 1928 deletions

View file

@ -34,63 +34,63 @@ GIT
PATH
remote: .
specs:
actioncable (5.2.0.beta2)
actionpack (= 5.2.0.beta2)
actioncable (6.0.0.alpha)
actionpack (= 6.0.0.alpha)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.0.beta2)
actionpack (= 5.2.0.beta2)
actionview (= 5.2.0.beta2)
activejob (= 5.2.0.beta2)
actionmailer (6.0.0.alpha)
actionpack (= 6.0.0.alpha)
actionview (= 6.0.0.alpha)
activejob (= 6.0.0.alpha)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.2.0.beta2)
actionview (= 5.2.0.beta2)
activesupport (= 5.2.0.beta2)
actionpack (6.0.0.alpha)
actionview (= 6.0.0.alpha)
activesupport (= 6.0.0.alpha)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.2.0.beta2)
activesupport (= 5.2.0.beta2)
actionview (6.0.0.alpha)
activesupport (= 6.0.0.alpha)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (5.2.0.beta2)
activesupport (= 5.2.0.beta2)
activejob (6.0.0.alpha)
activesupport (= 6.0.0.alpha)
globalid (>= 0.3.6)
activemodel (5.2.0.beta2)
activesupport (= 5.2.0.beta2)
activerecord (5.2.0.beta2)
activemodel (= 5.2.0.beta2)
activesupport (= 5.2.0.beta2)
activemodel (6.0.0.alpha)
activesupport (= 6.0.0.alpha)
activerecord (6.0.0.alpha)
activemodel (= 6.0.0.alpha)
activesupport (= 6.0.0.alpha)
arel (>= 9.0)
activestorage (5.2.0.beta2)
actionpack (= 5.2.0.beta2)
activerecord (= 5.2.0.beta2)
activestorage (6.0.0.alpha)
actionpack (= 6.0.0.alpha)
activerecord (= 6.0.0.alpha)
marcel (~> 0.3.1)
activesupport (5.2.0.beta2)
activesupport (6.0.0.alpha)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
rails (5.2.0.beta2)
actioncable (= 5.2.0.beta2)
actionmailer (= 5.2.0.beta2)
actionpack (= 5.2.0.beta2)
actionview (= 5.2.0.beta2)
activejob (= 5.2.0.beta2)
activemodel (= 5.2.0.beta2)
activerecord (= 5.2.0.beta2)
activestorage (= 5.2.0.beta2)
activesupport (= 5.2.0.beta2)
rails (6.0.0.alpha)
actioncable (= 6.0.0.alpha)
actionmailer (= 6.0.0.alpha)
actionpack (= 6.0.0.alpha)
actionview (= 6.0.0.alpha)
activejob (= 6.0.0.alpha)
activemodel (= 6.0.0.alpha)
activerecord (= 6.0.0.alpha)
activestorage (= 6.0.0.alpha)
activesupport (= 6.0.0.alpha)
bundler (>= 1.3.0)
railties (= 5.2.0.beta2)
railties (= 6.0.0.alpha)
sprockets-rails (>= 2.0.0)
railties (5.2.0.beta2)
actionpack (= 5.2.0.beta2)
activesupport (= 5.2.0.beta2)
railties (6.0.0.alpha)
actionpack (= 6.0.0.alpha)
activesupport (= 6.0.0.alpha)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
@ -274,7 +274,7 @@ GEM
hiredis (0.6.1-java)
http_parser.rb (0.6.0)
httpclient (2.8.3)
i18n (0.9.1)
i18n (0.9.3)
concurrent-ruby (~> 1.0)
io-like (0.3.0)
jdbc-mysql (5.1.44)
@ -333,8 +333,8 @@ GEM
mysql2 (0.4.9)
mysql2 (0.4.9-x64-mingw32)
mysql2 (0.4.9-x86-mingw32)
nio4r (2.1.0)
nio4r (2.1.0-java)
nio4r (2.2.0)
nio4r (2.2.0-java)
nokogiri (1.8.1)
mini_portile2 (~> 2.3.0)
nokogiri (1.8.1-java)
@ -496,6 +496,8 @@ GEM
websocket (1.2.4)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-driver (0.6.5-java)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
xpath (2.1.0)
nokogiri (~> 1.3)

View file

@ -1 +1 @@
5.2.0.beta2
6.0.0.alpha

View file

@ -1,34 +1,3 @@
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Removed deprecated evented redis adapter.
*Rafael Mendonça França*
* Support redis-rb 4.0.
*Jeremy Daer*
* Hash long stream identifiers when using PostgreSQL adapter.
PostgreSQL has a limit on identifiers length (63 chars, [docs](https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS)).
Provided fix minifies identifiers longer than 63 chars by hashing them with SHA1.
Fixes #28751.
*Vladimir Dementyev*
* Action Cable's `redis` adapter allows for other common redis-rb options (`host`, `port`, `db`, `password`) in cable.yml.
Previously, it accepts only a [redis:// url](https://www.iana.org/assignments/uri-schemes/prov/redis) as an option.
While we can add all of these options to the `url` itself, it is not explicitly documented. This alternative setup
is shown as the first example in the [Redis rubygem](https://github.com/redis/redis-rb#getting-started), which
makes this set of options as sensible as using just the `url`.
*Marc Rendl Ignacio*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/actioncable/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actioncable/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActionCable
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,6 +1,6 @@
{
"name": "actioncable",
"version": "5.2.0-beta2",
"version": "6.0.0-alpha",
"description": "WebSocket framework for Ruby on Rails.",
"main": "lib/assets/compiled/action_cable.js",
"files": [

View file

@ -1,33 +1,3 @@
* Bring back proc with arity of 1 in `ActionMailer::Base.default` proc
since it was supported in Rails 5.0 but not deprecated.
*Jimmy Bourassa*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Add `assert_enqueued_email_with` test helper.
assert_enqueued_email_with ContactMailer, :welcome do
ContactMailer.welcome.deliver_later
end
*Mikkel Malmberg*
* Allow Action Mailer classes to configure their delivery job.
class MyMailer < ApplicationMailer
self.delivery_job = MyCustomDeliveryJob
...
end
*Matthew Mongeau*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/actionmailer/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actionmailer/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActionMailer
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,247 +1,3 @@
* Add `Referrer-Policy` header to default headers set.
*Guillermo Iguaran*
* Changed the system tests to set Puma as default server only when the
user haven't specified manually another server.
*Guillermo Iguaran*
* Add secure `X-Download-Options` and `X-Permitted-Cross-Domain-Policies` to
default headers set.
*Guillermo Iguaran*
* Add headless firefox support to System Tests.
*bogdanvlviv*
* Changed the default system test screenshot output from `inline` to `simple`.
`inline` works well for iTerm2 but not everyone uses iTerm2. Some terminals like
Terminal.app ignore the `inline` and output the path to the file since it can't
render the image. Other terminals, like those on Ubuntu, cannot handle the image
inline, but also don't handle it gracefully and instead of outputting the file
path, it dumps binary into the terminal.
Commit 9d6e28 fixes this by changing the default for screenshot to be `simple`.
*Eileen M. Uchitelle*
* Register most popular audio/video/font mime types supported by modern browsers.
*Guillermo Iguaran*
* Fix optimized url helpers when using relative url root
Fixes #31220.
*Andrew White*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Add DSL for configuring Content-Security-Policy header
The DSL allows you to configure a global Content-Security-Policy
header and then override within a controller. For more information
about the Content-Security-Policy header see MDN:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
Example global policy:
# config/initializers/content_security_policy.rb
Rails.application.config.content_security_policy do |p|
p.default_src :self, :https
p.font_src :self, :https, :data
p.img_src :self, :https, :data
p.object_src :none
p.script_src :self, :https
p.style_src :self, :https, :unsafe_inline
end
Example controller overrides:
# Override policy inline
class PostsController < ApplicationController
content_security_policy do |p|
p.upgrade_insecure_requests true
end
end
# Using literal values
class PostsController < ApplicationController
content_security_policy do |p|
p.base_uri "https://www.example.com"
end
end
# Using mixed static and dynamic values
class PostsController < ApplicationController
content_security_policy do |p|
p.base_uri :self, -> { "https://#{current_user.domain}.example.com" }
end
end
Allows you to also only report content violations for migrating
legacy content using the `content_security_policy_report_only`
configuration attribute, e.g;
# config/initializers/content_security_policy.rb
Rails.application.config.content_security_policy_report_only = true
# controller override
class PostsController < ApplicationController
self.content_security_policy_report_only = true
end
Note that this feature does not validate the header for performance
reasons since the header is calculated at runtime.
*Andrew White*
* Make `assert_recognizes` to traverse mounted engines
*Yuichiro Kaneko*
* Remove deprecated `ActionController::ParamsParser::ParseError`.
*Rafael Mendonça França*
* Add `:allow_other_host` option to `redirect_back` method.
When `allow_other_host` is set to `false`, the `redirect_back` will not allow redirecting from a
different host. `allow_other_host` is `true` by default.
*Tim Masliuchenko*
* Add headless chrome support to System Tests.
*Yuji Yaginuma*
* Add ability to enable Early Hints for HTTP/2
If supported by the server, and enabled in Puma this allows H2 Early Hints to be used.
The `javascript_include_tag` and the `stylesheet_link_tag` automatically add Early Hints if requested.
*Eileen M. Uchitelle*, *Aaron Patterson*
* Simplify cookies middleware with key rotation support
Use the `rotate` method for both `MessageEncryptor` and
`MessageVerifier` to add key rotation support for encrypted and
signed cookies. This also helps simplify support for legacy cookie
security.
*Michael J Coyne*
* Use Capybara registered `:puma` server config.
The Capybara registered `:puma` server ensures the puma server is run in process so
connection sharing and open request detection work correctly by default.
*Thomas Walpole*
* Cookies `:expires` option supports `ActiveSupport::Duration` object.
cookies[:user_name] = { value: "assain", expires: 1.hour }
cookies[:key] = { value: "a yummy cookie", expires: 6.months }
Pull Request: #30121
*Assain Jaleel*
* Enforce signed/encrypted cookie expiry server side.
Rails can thwart attacks by malicious clients that don't honor a cookie's expiry.
It does so by stashing the expiry within the written cookie and relying on the
signing/encrypting to vouch that it hasn't been tampered with. Then on a
server-side read, the expiry is verified and any expired cookie is discarded.
Pull Request: #30121
*Assain Jaleel*
* Make `take_failed_screenshot` work within engine.
Fixes #30405.
*Yuji Yaginuma*
* Deprecate `ActionDispatch::TestResponse` response aliases.
`#success?`, `#missing?` & `#error?` are not supported by the actual
`ActionDispatch::Response` object and can produce false-positives. Instead,
use the response helpers provided by `Rack::Response`.
*Trevor Wistaff*
* Protect from forgery by default
Rather than protecting from forgery in the generated `ApplicationController`,
add it to `ActionController::Base` depending on
`config.action_controller.default_protect_from_forgery`. This configuration
defaults to false to support older versions which have removed it from their
`ApplicationController`, but is set to true for Rails 5.2.
*Lisa Ugray*
* Fallback `ActionController::Parameters#to_s` to `Hash#to_s`.
*Kir Shatrov*
* `driven_by` now registers poltergeist and capybara-webkit.
If poltergeist or capybara-webkit are set as drivers is set for System Tests,
`driven_by` will register the driver and set additional options passed via
the `:options` parameter.
Refer to the respective driver's documentation to see what options can be passed.
*Mario Chavez*
* AEAD encrypted cookies and sessions with GCM.
Encrypted cookies now use AES-GCM which couples authentication and
encryption in one faster step and produces shorter ciphertexts. Cookies
encrypted using AES in CBC HMAC mode will be seamlessly upgraded when
this new mode is enabled via the
`action_dispatch.use_authenticated_cookie_encryption` configuration value.
*Michael J Coyne*
* Change the cache key format for fragments to make it easier to debug key churn. The new format is:
views/template/action.html.erb:7a1156131a6928cb0026877f8b749ac9/projects/123
^template path ^template tree digest ^class ^id
*DHH*
* Add support for recyclable cache keys with fragment caching. This uses the new versioned entries in the
`ActiveSupport::Cache` stores and relies on the fact that Active Record has split `#cache_key` and `#cache_version`
to support it.
*DHH*
* Add `action_controller_api` and `action_controller_base` load hooks to be called in `ActiveSupport.on_load`
`ActionController::Base` and `ActionController::API` have differing implementations. This means that
the one umbrella hook `action_controller` is not able to address certain situations where a method
may not exist in a certain implementation.
This is fixed by adding two new hooks so you can target `ActionController::Base` vs `ActionController::API`
Fixes #27013.
*Julian Nadeau*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/actionpack/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actionpack/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActionPack
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,79 +1,3 @@
* Allow the use of callable objects as group methods for grouped selects.
Until now, the `option_groups_from_collection_for_select` method was only able to
handle method names as `group_method` and `group_label_method` parameters,
it is now able to receive procs and other callable objects too.
*Jérémie Bonal*
* Add `preload_link_tag` helper
This helper that allows to the browser to initiate early fetch of resources
(different to the specified in `javascript_include_tag` and `stylesheet_link_tag`).
Additionally, this sends Early Hints if supported by browser.
*Guillermo Iguaran*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Change `form_with` to generates ids by default.
When `form_with` was introduced we disabled the automatic generation of ids
that was enabled in `form_for`. This usually is not an good idea since labels don't work
when the input doesn't have an id and it made harder to test with Capybara.
You can still disable the automatic generation of ids setting `config.action_view.form_with_generates_ids`
to `false.`
*Nick Pezza*
* Fix issues with `field_error_proc` wrapping `optgroup` and select divider `option`.
Fixes #31088
*Matthias Neumayr*
* Remove deprecated Erubis ERB handler.
*Rafael Mendonça França*
* Remove default `alt` text generation.
Fixes #30096
*Cameron Cundiff*
* Add `srcset` option to `image_tag` helper.
*Roberto Miranda*
* Fix issues with scopes and engine on `current_page?` method.
Fixes #29401.
*Nikita Savrov*
* Generate field ids in `collection_check_boxes` and `collection_radio_buttons`.
This makes sure that the labels are linked up with the fields.
Fixes #29014.
*Yuji Yaginuma*
* Add `:json` type to `auto_discovery_link_tag` to support [JSON Feeds](https://jsonfeed.org/version/1)
*Mike Gunderloy*
* Update `distance_of_time_in_words` helper to display better error messages
for bad input.
*Jay Hayes*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/actionview/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actionview/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActionView
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,6 +1,6 @@
{
"name": "rails-ujs",
"version": "5.2.0-beta2",
"version": "6.0.0-alpha",
"description": "Ruby on Rails unobtrusive scripting adapter",
"main": "lib/assets/compiled/rails-ujs.js",
"files": [

View file

@ -1,29 +1,3 @@
* Allow block to be passed to `ActiveJob::Base.discard_on` to allow custom handling of discard jobs.
Example:
class RemoteServiceJob < ActiveJob::Base
discard_on(CustomAppException) do |job, exception|
ExceptionNotifier.caught(exception)
end
def perform(*args)
# Might raise CustomAppException for something domain specific
end
end
*Aidan Haran*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Support redis-rb 4.0.
*Jeremy Daer*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/activejob/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/activejob/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActiveJob
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,67 +1,3 @@
* Models using the attributes API with a proc default can now be marshalled.
Fixes #31216.
*Sean Griffin*
* Fix to working before/after validation callbacks on multiple contexts.
*Yoshiyuki Hirano*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Execute `ConfirmationValidator` validation when `_confirmation`'s value is `false`.
*bogdanvlviv*
* Allow passing a Proc or Symbol to length validator options.
*Matt Rohrer*
* Add method `#merge!` for `ActiveModel::Errors`.
*Jahfer Husain*
* Fix regression in numericality validator when comparing Decimal and Float input
values with more scale than the schema.
*Bradley Priest*
* Fix methods `#keys`, `#values` in `ActiveModel::Errors`.
Change `#keys` to only return the keys that don't have empty messages.
Change `#values` to only return the not empty values.
Example:
# Before
person = Person.new
person.errors.keys # => []
person.errors.values # => []
person.errors.messages # => {}
person.errors[:name] # => []
person.errors.messages # => {:name => []}
person.errors.keys # => [:name]
person.errors.values # => [[]]
# After
person = Person.new
person.errors.keys # => []
person.errors.values # => []
person.errors.messages # => {}
person.errors[:name] # => []
person.errors.messages # => {:name => []}
person.errors.keys # => []
person.errors.values # => []
*bogdanvlviv*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/activemodel/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/activemodel/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActiveModel
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,669 +1,3 @@
* Deprecate `expand_hash_conditions_for_aggregates` without replacement.
Using a `Relation` for performing queries is the prefered API.
*Ryuta Kamizono*
* Fix not expanded problem when passing an Array object as argument to the where method using `composed_of` column.
```
david_balance = customers(:david).balance
Customer.where(balance: [david_balance]).to_sql
# Before: WHERE `customers`.`balance` = NULL
# After : WHERE `customers`.`balance` = 50
```
Fixes #31723.
*Yutaro Kanagawa*
* Fix `count(:all)` with eager loading and having an order other than the driving table.
Fixes #31783.
*Ryuta Kamizono*
* Clear the transaction state when an Active Record object is duped.
Fixes #31670.
*Yuriy Ustushenko*
* Support for PostgreSQL foreign tables.
*fatkodima*
* Fix relation merger issue with `left_outer_joins`.
*Mehmet Emin İNAÇ*
* Don't allow destroyed object mutation after `save` or `save!` is called.
*Ryuta Kamizono*
* Take into account association conditions when deleting through records.
Fixes #18424.
*Piotr Jakubowski*
* Fix nested `has_many :through` associations on unpersisted parent instances.
For example, if you have
class Post < ActiveRecord::Base
belongs_to :author
has_many :books, through: :author
has_many :subscriptions, through: :books
end
class Author < ActiveRecord::Base
has_one :post
has_many :books
has_many :subscriptions, through: :books
end
class Book < ActiveRecord::Base
belongs_to :author
has_many :subscriptions
end
class Subscription < ActiveRecord::Base
belongs_to :book
end
Before:
If `post` is not persisted, then `post.subscriptions` will be empty.
After:
If `post` is not persisted, then `post.subscriptions` can be set and used
just like it would if `post` were persisted.
Fixes #16313.
*Zoltan Kiss*
* Fixed inconsistency with `first(n)` when used with `limit()`.
The `first(n)` finder now respects the `limit()`, making it consistent
with `relation.to_a.first(n)`, and also with the behavior of `last(n)`.
Fixes #23979.
*Brian Christian*
* Use `count(:all)` in `HasManyAssociation#count_records` to prevent invalid
SQL queries for association counting.
*Klas Eskilson*
* Fix to invoke callbacks when using `update_attribute`.
*Mike Busch*
* Fix `count(:all)` to correctly work `distinct` with custom SELECT list.
*Ryuta Kamizono*
* Using subselect for `delete_all` with `limit` or `offset`.
*Ryuta Kamizono*
* Undefine attribute methods on descendants when resetting column
information.
*Chris Salzberg*
* Log database query callers
Add `verbose_query_logs` configuration option to display the caller
of database queries in the log to facilitate N+1 query resolution
and other debugging.
Enabled in development only for new and upgraded applications. Not
recommended for use in the production environment since it relies
on Ruby's `Kernel#caller_locations` which is fairly slow.
*Olivier Lacan*
* Fix conflicts `counter_cache` with `touch: true` by optimistic locking.
```
# create_table :posts do |t|
# t.integer :comments_count, default: 0
# t.integer :lock_version
# t.timestamps
# end
class Post < ApplicationRecord
end
# create_table :comments do |t|
# t.belongs_to :post
# end
class Comment < ApplicationRecord
belongs_to :post, touch: true, counter_cache: true
end
```
Before:
```
post = Post.create!
# => begin transaction
INSERT INTO "posts" ("created_at", "updated_at", "lock_version")
VALUES ("2017-12-11 21:27:11.387397", "2017-12-11 21:27:11.387397", 0)
commit transaction
comment = Comment.create!(post: post)
# => begin transaction
INSERT INTO "comments" ("post_id") VALUES (1)
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) + 1,
"lock_version" = COALESCE("lock_version", 0) + 1 WHERE "posts"."id" = 1
UPDATE "posts" SET "updated_at" = '2017-12-11 21:27:11.398330',
"lock_version" = 1 WHERE "posts"."id" = 1 AND "posts"."lock_version" = 0
rollback transaction
# => ActiveRecord::StaleObjectError: Attempted to touch a stale object: Post.
Comment.take.destroy!
# => begin transaction
DELETE FROM "comments" WHERE "comments"."id" = 1
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) - 1,
"lock_version" = COALESCE("lock_version", 0) + 1 WHERE "posts"."id" = 1
UPDATE "posts" SET "updated_at" = '2017-12-11 21:42:47.785901',
"lock_version" = 1 WHERE "posts"."id" = 1 AND "posts"."lock_version" = 0
rollback transaction
# => ActiveRecord::StaleObjectError: Attempted to touch a stale object: Post.
```
After:
```
post = Post.create!
# => begin transaction
INSERT INTO "posts" ("created_at", "updated_at", "lock_version")
VALUES ("2017-12-11 21:27:11.387397", "2017-12-11 21:27:11.387397", 0)
commit transaction
comment = Comment.create!(post: post)
# => begin transaction
INSERT INTO "comments" ("post_id") VALUES (1)
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) + 1,
"lock_version" = COALESCE("lock_version", 0) + 1,
"updated_at" = '2017-12-11 21:37:09.802642' WHERE "posts"."id" = 1
commit transaction
comment.destroy!
# => begin transaction
DELETE FROM "comments" WHERE "comments"."id" = 1
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) - 1,
"lock_version" = COALESCE("lock_version", 0) + 1,
"updated_at" = '2017-12-11 21:39:02.685520' WHERE "posts"."id" = 1
commit transaction
```
Fixes #31199.
*bogdanvlviv*
* Add support for PostgreSQL operator classes to `add_index`.
Example:
add_index :users, :name, using: :gist, opclass: { name: :gist_trgm_ops }
*Greg Navis*
* Don't allow scopes to be defined which conflict with instance methods on `Relation`.
Fixes #31120.
*kinnrot*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Add new error class `QueryCanceled` which will be raised
when canceling statement due to user request.
*Ryuta Kamizono*
* Add `#up_only` to database migrations for code that is only relevant when
migrating up, e.g. populating a new column.
*Rich Daley*
* Require raw SQL fragments to be explicitly marked when used in
relation query methods.
Before:
```
Article.order("LENGTH(title)")
```
After:
```
Article.order(Arel.sql("LENGTH(title)"))
```
This prevents SQL injection if applications use the [strongly
discouraged] form `Article.order(params[:my_order])`, under the
mistaken belief that only column names will be accepted.
Raw SQL strings will now cause a deprecation warning, which will
become an UnknownAttributeReference error in Rails 6.0. Applications
can opt in to the future behavior by setting `allow_unsafe_raw_sql`
to `:disabled`.
Common and judged-safe string values (such as simple column
references) are unaffected:
```
Article.order("title DESC")
```
*Ben Toews*
* `update_all` will now pass its values to `Type#cast` before passing them to
`Type#serialize`. This means that `update_all(foo: 'true')` will properly
persist a boolean.
*Sean Griffin*
* Add new error class `StatementTimeout` which will be raised
when statement timeout exceeded.
*Ryuta Kamizono*
* Fix `bin/rails db:migrate` with specified `VERSION`.
`bin/rails db:migrate` with empty VERSION behaves as without `VERSION`.
Check a format of `VERSION`: Allow a migration version number
or name of a migration file. Raise error if format of `VERSION` is invalid.
Raise error if target migration doesn't exist.
*bogdanvlviv*
* Fixed a bug where column orders for an index weren't written to
`db/schema.rb` when using the sqlite adapter.
Fixes #30902.
*Paul Kuruvilla*
* Remove deprecated method `#sanitize_conditions`.
*Rafael Mendonça França*
* Remove deprecated method `#scope_chain`.
*Rafael Mendonça França*
* Remove deprecated configuration `.error_on_ignored_order_or_limit`.
*Rafael Mendonça França*
* Remove deprecated arguments from `#verify!`.
*Rafael Mendonça França*
* Remove deprecated argument `name` from `#indexes`.
*Rafael Mendonça França*
* Remove deprecated method `ActiveRecord::Migrator.schema_migrations_table_name`.
*Rafael Mendonça França*
* Remove deprecated method `supports_primary_key?`.
*Rafael Mendonça França*
* Remove deprecated method `supports_migrations?`.
*Rafael Mendonça França*
* Remove deprecated methods `initialize_schema_migrations_table` and `initialize_internal_metadata_table`.
*Rafael Mendonça França*
* Raises when calling `lock!` in a dirty record.
*Rafael Mendonça França*
* Remove deprecated support to passing a class to `:class_name` on associations.
*Rafael Mendonça França*
* Remove deprecated argument `default` from `index_name_exists?`.
*Rafael Mendonça França*
* Remove deprecated support to `quoted_id` when typecasting an Active Record object.
*Rafael Mendonça França*
* Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create wrong
ar_internal_metadata's data for a test database.
Before:
```
$ RAILS_ENV=test rails dbconsole
> SELECT * FROM ar_internal_metadata;
key|value|created_at|updated_at
environment|development|2017-09-11 23:14:10.815679|2017-09-11 23:14:10.815679
```
After:
```
$ RAILS_ENV=test rails dbconsole
> SELECT * FROM ar_internal_metadata;
key|value|created_at|updated_at
environment|test|2017-09-11 23:14:10.815679|2017-09-11 23:14:10.815679
```
Fixes #26731.
*bogdanvlviv*
* Fix longer sequence name detection for serial columns.
Fixes #28332.
*Ryuta Kamizono*
* MySQL: Don't lose `auto_increment: true` in the `db/schema.rb`.
Fixes #30894.
*Ryuta Kamizono*
* Fix `COUNT(DISTINCT ...)` for `GROUP BY` with `ORDER BY` and `LIMIT`.
Fixes #30886.
*Ryuta Kamizono*
* PostgreSQL `tsrange` now preserves subsecond precision.
PostgreSQL 9.1+ introduced range types, and Rails added support for using
this datatype in Active Record. However, the serialization of
`PostgreSQL::OID::Range` was incomplete, because it did not properly
cast the bounds that make up the range. This led to subseconds being
dropped in SQL commands:
Before:
connection.type_cast(tsrange.serialize(range_value))
# => "[2010-01-01 13:30:00 UTC,2011-02-02 19:30:00 UTC)"
Now:
connection.type_cast(tsrange.serialize(range_value))
# => "[2010-01-01 13:30:00.670277,2011-02-02 19:30:00.745125)"
*Thomas Cannon*
* Passing a `Set` to `Relation#where` now behaves the same as passing an
array.
*Sean Griffin*
* Use given algorithm while removing index from database.
Fixes #24190.
*Mehmet Emin İNAÇ*
* Update payload names for `sql.active_record` instrumentation to be
more descriptive.
Fixes #30586.
*Jeremy Green*
* Add new error class `LockWaitTimeout` which will be raised
when lock wait timeout exceeded.
*Gabriel Courtemanche*
* Remove deprecated `#migration_keys`.
*Ryuta Kamizono*
* Automatically guess the inverse associations for STI.
*Yuichiro Kaneko*
* Ensure `sum` honors `distinct` on `has_many :through` associations
Fixes #16791.
*Aaron Wortham*
* Add `binary` fixture helper method.
*Atsushi Yoshida*
* When using `Relation#or`, extract the common conditions and put them before the OR condition.
*Maxime Handfield Lapointe*
* `Relation#or` now accepts two relations who have different values for
`references` only, as `references` can be implicitly called by `where`.
Fixes #29411.
*Sean Griffin*
* `ApplicationRecord` is no longer generated when generating models. If you
need to generate it, it can be created with `rails g application_record`.
*Lisa Ugray*
* Fix `COUNT(DISTINCT ...)` with `ORDER BY` and `LIMIT` to keep the existing select list.
*Ryuta Kamizono*
* When a `has_one` association is destroyed by `dependent: destroy`,
`destroyed_by_association` will now be set to the reflection, matching the
behaviour of `has_many` associations.
*Lisa Ugray*
* Fix `unscoped(where: [columns])` removing the wrong bind values
When the `where` is called on a relation after a `or`, unscoping the column of that later `where` removed
bind values used by the `or` instead. (possibly other cases too)
```
Post.where(id: 1).or(Post.where(id: 2)).where(foo: 3).unscope(where: :foo).to_sql
# Currently:
# SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 2 OR "posts"."id" = 3)
# With fix:
# SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 1 OR "posts"."id" = 2)
```
*Maxime Handfield Lapointe*
* Values constructed using multi-parameter assignment will now use the
post-type-cast value for rendering in single-field form inputs.
*Sean Griffin*
* `Relation#joins` is no longer affected by the target model's
`current_scope`, with the exception of `unscoped`.
Fixes #29338.
*Sean Griffin*
* Change sqlite3 boolean serialization to use 1 and 0
SQLite natively recognizes 1 and 0 as true and false, but does not natively
recognize 't' and 'f' as was previously serialized.
This change in serialization requires a migration of stored boolean data
for SQLite databases, so it's implemented behind a configuration flag
whose default false value is deprecated.
*Lisa Ugray*
* Skip query caching when working with batches of records (`find_each`, `find_in_batches`,
`in_batches`).
Previously, records would be fetched in batches, but all records would be retained in memory
until the end of the request or job.
*Eugene Kenny*
* Prevent errors raised by `sql.active_record` notification subscribers from being converted into
`ActiveRecord::StatementInvalid` exceptions.
*Dennis Taylor*
* Fix eager loading/preloading association with scope including joins.
Fixes #28324.
*Ryuta Kamizono*
* Fix transactions to apply state to child transactions
Previously, if you had a nested transaction and the outer transaction was rolledback, the record from the
inner transaction would still be marked as persisted.
This change fixes that by applying the state of the parent transaction to the child transaction when the
parent transaction is rolledback. This will correctly mark records from the inner transaction as not persisted.
*Eileen M. Uchitelle*, *Aaron Patterson*
* Deprecate `set_state` method in `TransactionState`
Deprecated the `set_state` method in favor of setting the state via specific methods. If you need to mark the
state of the transaction you can now use `rollback!`, `commit!` or `nullify!` instead of
`set_state(:rolledback)`, `set_state(:committed)`, or `set_state(nil)`.
*Eileen M. Uchitelle*, *Aaron Patterson*
* Deprecate delegating to `arel` in `Relation`.
*Ryuta Kamizono*
* Fix eager loading to respect `store_full_sti_class` setting.
*Ryuta Kamizono*
* Query cache was unavailable when entering the `ActiveRecord::Base.cache` block
without being connected.
*Tsukasa Oishi*
* Previously, when building records using a `has_many :through` association,
if the child records were deleted before the parent was saved, they would
still be persisted. Now, if child records are deleted before the parent is saved
on a `has_many :through` association, the child records will not be persisted.
*Tobias Kraze*
* Merging two relations representing nested joins no longer transforms the joins of
the merged relation into LEFT OUTER JOIN. Example to clarify:
```
Author.joins(:posts).merge(Post.joins(:comments))
# Before the change:
#=> SELECT ... FROM authors INNER JOIN posts ON ... LEFT OUTER JOIN comments ON...
# After the change:
#=> SELECT ... FROM authors INNER JOIN posts ON ... INNER JOIN comments ON...
```
TODO: Add to the Rails 5.2 upgrade guide
*Maxime Handfield Lapointe*
* `ActiveRecord::Persistence#touch` does not work well when optimistic locking enabled and
`locking_column`, without default value, is null in the database.
*bogdanvlviv*
* Fix destroying existing object does not work well when optimistic locking enabled and
`locking_column` is null in the database.
*bogdanvlviv*
* Use bulk INSERT to insert fixtures for better performance.
*Kir Shatrov*
* Prevent creation of bind param if casted value is nil.
*Ryuta Kamizono*
* Deprecate passing arguments and block at the same time to `count` and `sum` in `ActiveRecord::Calculations`.
*Ryuta Kamizono*
* Loading model schema from database is now thread-safe.
Fixes #28589.
*Vikrant Chaudhary*, *David Abdemoulaie*
* Add `ActiveRecord::Base#cache_version` to support recyclable cache keys via the new versioned entries
in `ActiveSupport::Cache`. This also means that `ActiveRecord::Base#cache_key` will now return a stable key
that does not include a timestamp any more.
NOTE: This feature is turned off by default, and `#cache_key` will still return cache keys with timestamps
until you set `ActiveRecord::Base.cache_versioning = true`. That's the setting for all new apps on Rails 5.2+
*DHH*
* Respect `SchemaDumper.ignore_tables` in rake tasks for databases structure dump
*Rusty Geldmacher*, *Guillermo Iguaran*
* Add type caster to `RuntimeReflection#alias_name`
Fixes #28959.
*Jon Moss*
* Deprecate `supports_statement_cache?`.
*Ryuta Kamizono*
* Raise error `UnknownMigrationVersionError` on the movement of migrations
when the current migration does not exist.
*bogdanvlviv*
* Fix `bin/rails db:forward` first migration.
*bogdanvlviv*
* Support Descending Indexes for MySQL.
MySQL 8.0.1 and higher supports descending indexes: `DESC` in an index definition is no longer ignored.
See https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html.
*Ryuta Kamizono*
* Fix inconsistency with changed attributes when overriding Active Record attribute reader.
*bogdanvlviv*
* When calling the dynamic fixture accessor method with no arguments, it now returns all fixtures of this type.
Previously this method always returned an empty array.
*Kevin McPhillips*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/activerecord/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/activerecord/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActiveRecord
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,35 +1,3 @@
* Preserve display aspect ratio when extracting width and height from videos
with rectangular samples in `ActiveStorage::Analyzer::VideoAnalyzer`.
When a video contains a display aspect ratio, emit it in metadata as
`:display_aspect_ratio` rather than the ambiguous `:aspect_ratio`. Compute
its height by scaling its encoded frame width according to the DAR.
*George Claghorn*
* Use `after_destroy_commit` instead of `before_destroy` for purging
attachments when a record is destroyed.
*Hiroki Zenigami*
* Force `:attachment` disposition for specific, configurable content types.
This mitigates possible security issues such as XSS or phishing when
serving them inline. A list of such content types is included by default,
and can be configured via `content_types_to_serve_as_binary`.
*Rosa Gutierrez*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* Fix the gem adding the migrations files to the package.
*Yuji Yaginuma*
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Added to Rails.
*DHH*
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/activestorage/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActiveStorage
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,6 +1,6 @@
{
"name": "activestorage",
"version": "5.2.0-beta2",
"version": "6.0.0-alpha",
"description": "Attach cloud and local files in Rails applications",
"main": "app/assets/javascripts/activestorage.js",
"files": [

View file

@ -1,507 +1,3 @@
* Add support for connection pooling on RedisCacheStore.
*fatkodima*
* Support hash as first argument in `assert_difference`. This allows to specify multiple
numeric differences in the same assertion.
assert_difference ->{ Article.count } => 1, ->{ Post.count } => 2
*Julien Meichelbeck*
* Add missing instrumentation for `read_multi` in `ActiveSupport::Cache::Store`.
*Ignatius Reza Lesmana*
* `assert_changes` will always assert that the expression changes,
regardless of `from:` and `to:` argument combinations.
*Daniel Ma*
* Use SHA-1 to generate non-sensitive digests, such as the ETag header.
Enabled by default for new apps; upgrading apps can opt in by setting
`config.active_support.use_sha1_digests = true`.
*Dmitri Dolguikh*, *Eugene Kenny*
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Changed default behaviour of `ActiveSupport::SecurityUtils.secure_compare`,
to make it not leak length information even for variable length string.
Renamed old `ActiveSupport::SecurityUtils.secure_compare` to `fixed_length_secure_compare`,
and started raising `ArgumentError` in case of length mismatch of passed strings.
*Vipul A M*
* Make `ActiveSupport::TimeZone.all` return only time zones that are in
`ActiveSupport::TimeZone::MAPPING`.
Fixes #7245.
*Chris LaRose*
* MemCacheStore: Support expiring counters.
Pass `expires_in: [seconds]` to `#increment` and `#decrement` options
to set the Memcached TTL (time-to-live) if the counter doesn't exist.
If the counter exists, Memcached doesn't extend its expiry when it's
incremented or decremented.
```
Rails.cache.increment("my_counter", 1, expires_in: 2.minutes)
```
*Takumasa Ochi*
* Handle `TZInfo::AmbiguousTime` errors
Make `ActiveSupport::TimeWithZone` match Ruby's handling of ambiguous
times by choosing the later period, e.g.
Ruby:
```
ENV["TZ"] = "Europe/Moscow"
Time.local(2014, 10, 26, 1, 0, 0) # => 2014-10-26 01:00:00 +0300
```
Before:
```
>> "2014-10-26 01:00:00".in_time_zone("Moscow")
TZInfo::AmbiguousTime: 26/10/2014 01:00 is an ambiguous local time.
```
After:
```
>> "2014-10-26 01:00:00".in_time_zone("Moscow")
=> Sun, 26 Oct 2014 01:00:00 MSK +03:00
```
Fixes #17395.
*Andrew White*
* Redis cache store.
```
# Defaults to `redis://localhost:6379/0`. Only use for dev/test.
config.cache_store = :redis_cache_store
# Supports all common cache store options (:namespace, :compress,
# :compress_threshold, :expires_in, :race_condition_ttl) and all
# Redis options.
cache_password = Rails.application.secrets.redis_cache_password
config.cache_store = :redis_cache_store, driver: :hiredis,
namespace: 'myapp-cache', compress: true, timeout: 1,
url: "redis://:#{cache_password}@myapp-cache-1:6379/0"
# Supports Redis::Distributed with multiple hosts
config.cache_store = :redis_cache_store, driver: :hiredis
namespace: 'myapp-cache', compress: true,
url: %w[
redis://myapp-cache-1:6379/0
redis://myapp-cache-1:6380/0
redis://myapp-cache-2:6379/0
redis://myapp-cache-2:6380/0
redis://myapp-cache-3:6379/0
redis://myapp-cache-3:6380/0
]
# Or pass a builder block
config.cache_store = :redis_cache_store,
namespace: 'myapp-cache', compress: true,
redis: -> { Redis.new … }
```
Deployment note: Take care to use a *dedicated Redis cache* rather
than pointing this at your existing Redis server. It won't cope well
with mixed usage patterns and it won't expire cache entries by default.
Redis cache server setup guide: https://redis.io/topics/lru-cache
*Jeremy Daer*
* Cache: Enable compression by default for values > 1kB.
Compression has long been available, but opt-in and at a 16kB threshold.
It wasn't enabled by default due to CPU cost. Today it's cheap and typical
cache data is eminently compressible, such as HTML or JSON fragments.
Compression dramatically reduces Memcached/Redis mem usage, which means
the same cache servers can store more data, which means higher hit rates.
To disable compression, pass `compress: false` to the initializer.
*Jeremy Daer*
* Allow `Range#include?` on TWZ ranges
In #11474 we prevented TWZ ranges being iterated over which matched
Ruby's handling of Time ranges and as a consequence `include?`
stopped working with both Time ranges and TWZ ranges. However in
ruby/ruby@b061634 support was added for `include?` to use `cover?`
for 'linear' objects. Since we have no way of making Ruby consider
TWZ instances as 'linear' we have to override `Range#include?`.
Fixes #30799.
*Andrew White*
* Fix acronym support in `humanize`
Acronym inflections are stored with lowercase keys in the hash but
the match wasn't being lowercased before being looked up in the hash.
This shouldn't have any performance impact because before it would
fail to find the acronym and perform the `downcase` operation anyway.
Fixes #31052.
*Andrew White*
* Add same method signature for `Time#prev_year` and `Time#next_year`
in accordance with `Date#prev_year`, `Date#next_year`.
Allows pass argument for `Time#prev_year` and `Time#next_year`.
Before:
```
Time.new(2017, 9, 16, 17, 0).prev_year # => 2016-09-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).prev_year(1)
# => ArgumentError: wrong number of arguments (given 1, expected 0)
Time.new(2017, 9, 16, 17, 0).next_year # => 2018-09-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_year(1)
# => ArgumentError: wrong number of arguments (given 1, expected 0)
```
After:
```
Time.new(2017, 9, 16, 17, 0).prev_year # => 2016-09-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).prev_year(1) # => 2016-09-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_year # => 2018-09-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_year(1) # => 2018-09-16 17:00:00 +0300
```
*bogdanvlviv*
* Add same method signature for `Time#prev_month` and `Time#next_month`
in accordance with `Date#prev_month`, `Date#next_month`.
Allows pass argument for `Time#prev_month` and `Time#next_month`.
Before:
```
Time.new(2017, 9, 16, 17, 0).prev_month # => 2017-08-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).prev_month(1)
# => ArgumentError: wrong number of arguments (given 1, expected 0)
Time.new(2017, 9, 16, 17, 0).next_month # => 2017-10-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_month(1)
# => ArgumentError: wrong number of arguments (given 1, expected 0)
```
After:
```
Time.new(2017, 9, 16, 17, 0).prev_month # => 2017-08-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).prev_month(1) # => 2017-08-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_month # => 2017-10-16 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_month(1) # => 2017-10-16 17:00:00 +0300
```
*bogdanvlviv*
* Add same method signature for `Time#prev_day` and `Time#next_day`
in accordance with `Date#prev_day`, `Date#next_day`.
Allows pass argument for `Time#prev_day` and `Time#next_day`.
Before:
```
Time.new(2017, 9, 16, 17, 0).prev_day # => 2017-09-15 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).prev_day(1)
# => ArgumentError: wrong number of arguments (given 1, expected 0)
Time.new(2017, 9, 16, 17, 0).next_day # => 2017-09-17 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_day(1)
# => ArgumentError: wrong number of arguments (given 1, expected 0)
```
After:
```
Time.new(2017, 9, 16, 17, 0).prev_day # => 2017-09-15 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).prev_day(1) # => 2017-09-15 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_day # => 2017-09-17 17:00:00 +0300
Time.new(2017, 9, 16, 17, 0).next_day(1) # => 2017-09-17 17:00:00 +0300
```
*bogdanvlviv*
* `IO#to_json` now returns the `to_s` representation, rather than
attempting to convert to an array. This fixes a bug where `IO#to_json`
would raise an `IOError` when called on an unreadable object.
Fixes #26132.
*Paul Kuruvilla*
* Remove deprecated `halt_callback_chains_on_return_false` option.
*Rafael Mendonça França*
* Remove deprecated `:if` and `:unless` string filter for callbacks.
*Rafael Mendonça França*
* `Hash#slice` now falls back to Ruby 2.5+'s built-in definition if defined.
*Akira Matsuda*
* Deprecate `secrets.secret_token`.
The architecture for secrets had a big upgrade between Rails 3 and Rails 4,
when the default changed from using `secret_token` to `secret_key_base`.
`secret_token` has been soft deprecated in documentation for four years
but is still in place to support apps created before Rails 4.
Deprecation warnings have been added to help developers upgrade their
applications to `secret_key_base`.
*claudiob*, *Kasper Timm Hansen*
* Return an instance of `HashWithIndifferentAccess` from `HashWithIndifferentAccess#transform_keys`.
*Yuji Yaginuma*
* Add key rotation support to `MessageEncryptor` and `MessageVerifier`
This change introduces a `rotate` method to both the `MessageEncryptor` and
`MessageVerifier` classes. This method accepts the same arguments and
options as the given classes' constructor. The `encrypt_and_verify` method
for `MessageEncryptor` and the `verified` method for `MessageVerifier` also
accept an optional keyword argument `:on_rotation` block which is called
when a rotated instance is used to decrypt or verify the message.
*Michael J Coyne*
* Deprecate `Module#reachable?` method.
*bogdanvlviv*
* Add `config/credentials.yml.enc` to store production app secrets.
Allows saving any authentication credentials for third party services
directly in repo encrypted with `config/master.key` or `ENV["RAILS_MASTER_KEY"]`.
This will eventually replace `Rails.application.secrets` and the encrypted
secrets introduced in Rails 5.1.
*DHH*, *Kasper Timm Hansen*
* Add `ActiveSupport::EncryptedFile` and `ActiveSupport::EncryptedConfiguration`.
Allows for stashing encrypted files or configuration directly in repo by
encrypting it with a key.
Backs the new credentials setup above, but can also be used independently.
*DHH*, *Kasper Timm Hansen*
* `Module#delegate_missing_to` now raises `DelegationError` if target is nil,
similar to `Module#delegate`.
*Anton Khamets*
* Update `String#camelize` to provide feedback when wrong option is passed
`String#camelize` was returning nil without any feedback when an
invalid option was passed as a parameter.
Previously:
'one_two'.camelize(true)
# => nil
Now:
'one_two'.camelize(true)
# => ArgumentError: Invalid option, use either :upper or :lower.
*Ricardo Díaz*
* Fix modulo operations involving durations
Rails 5.1 introduced `ActiveSupport::Duration::Scalar` as a wrapper
around numeric values as a way of ensuring a duration was the outcome of
an expression. However, the implementation was missing support for modulo
operations. This support has now been added and should result in a duration
being returned from expressions involving modulo operations.
Prior to Rails 5.1:
5.minutes % 2.minutes
# => 60
Now:
5.minutes % 2.minutes
# => 1 minute
Fixes #29603 and #29743.
*Sayan Chakraborty*, *Andrew White*
* Fix division where a duration is the denominator
PR #29163 introduced a change in behavior when a duration was the denominator
in a calculation - this was incorrect as dividing by a duration should always
return a `Numeric`. The behavior of previous versions of Rails has been restored.
Fixes #29592.
*Andrew White*
* Add purpose and expiry support to `ActiveSupport::MessageVerifier` &
`ActiveSupport::MessageEncryptor`.
For instance, to ensure a message is only usable for one intended purpose:
token = @verifier.generate("x", purpose: :shipping)
@verifier.verified(token, purpose: :shipping) # => "x"
@verifier.verified(token) # => nil
Or make it expire after a set time:
@verifier.generate("x", expires_in: 1.month)
@verifier.generate("y", expires_at: Time.now.end_of_year)
Showcased with `ActiveSupport::MessageVerifier`, but works the same for
`ActiveSupport::MessageEncryptor`'s `encrypt_and_sign` and `decrypt_and_verify`.
Pull requests: #29599, #29854
*Assain Jaleel*
* Make the order of `Hash#reverse_merge!` consistent with `HashWithIndifferentAccess`.
*Erol Fornoles*
* Add `freeze_time` helper which freezes time to `Time.now` in tests.
*Prathamesh Sonpatki*
* Default `ActiveSupport::MessageEncryptor` to use AES 256 GCM encryption.
On for new Rails 5.2 apps. Upgrading apps can find the config as a new
framework default.
*Assain Jaleel*
* Cache: `write_multi`
Rails.cache.write_multi foo: 'bar', baz: 'qux'
Plus faster fetch_multi with stores that implement `write_multi_entries`.
Keys that aren't found may be written to the cache store in one shot
instead of separate writes.
The default implementation simply calls `write_entry` for each entry.
Stores may override if they're capable of one-shot bulk writes, like
Redis `MSET`.
*Jeremy Daer*
* Add default option to module and class attribute accessors.
mattr_accessor :settings, default: {}
Works for `mattr_reader`, `mattr_writer`, `cattr_accessor`, `cattr_reader`,
and `cattr_writer` as well.
*Genadi Samokovarov*
* Add `Date#prev_occurring` and `Date#next_occurring` to return specified next/previous occurring day of week.
*Shota Iguchi*
* Add default option to `class_attribute`.
Before:
class_attribute :settings
self.settings = {}
Now:
class_attribute :settings, default: {}
*DHH*
* `#singularize` and `#pluralize` now respect uncountables for the specified locale.
*Eilis Hamilton*
* Add `ActiveSupport::CurrentAttributes` to provide a thread-isolated attributes singleton.
Primary use case is keeping all the per-request attributes easily available to the whole system.
*DHH*
* Fix implicit coercion calculations with scalars and durations
Previously, calculations where the scalar is first would be converted to a duration
of seconds, but this causes issues with dates being converted to times, e.g:
Time.zone = "Beijing" # => Asia/Shanghai
date = Date.civil(2017, 5, 20) # => Mon, 20 May 2017
2 * 1.day # => 172800 seconds
date + 2 * 1.day # => Mon, 22 May 2017 00:00:00 CST +08:00
Now, the `ActiveSupport::Duration::Scalar` calculation methods will try to maintain
the part structure of the duration where possible, e.g:
Time.zone = "Beijing" # => Asia/Shanghai
date = Date.civil(2017, 5, 20) # => Mon, 20 May 2017
2 * 1.day # => 2 days
date + 2 * 1.day # => Mon, 22 May 2017
Fixes #29160, #28970.
*Andrew White*
* Add support for versioned cache entries. This enables the cache stores to recycle cache keys, greatly saving
on storage in cases with frequent churn. Works together with the separation of `#cache_key` and `#cache_version`
in Active Record and its use in Action Pack's fragment caching.
*DHH*
* Pass gem name and deprecation horizon to deprecation notifications.
*Willem van Bergen*
* Add support for `:offset` and `:zone` to `ActiveSupport::TimeWithZone#change`
*Andrew White*
* Add support for `:offset` to `Time#change`
Fixes #28723.
*Andrew White*
* Add `fetch_values` for `HashWithIndifferentAccess`
The method was originally added to `Hash` in Ruby 2.3.0.
*Josh Pencheon*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/activesupport/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/activesupport/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module ActiveSupport
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -1,10 +1,3 @@
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* No changes.
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/guides/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/guides/CHANGELOG.md) for previous changes.

View file

@ -1,164 +1,3 @@
## Rails 5.2.0.beta2 (November 28, 2017) ##
* No changes.
## Rails 5.2.0.beta1 (November 27, 2017) ##
* Deprecate `after_bundle` callback in Rails plugin templates.
*Yuji Yaginuma*
* `rails new` and `rails plugin new` get `Active Storage` by default.
Add ability to skip `Active Storage` with `--skip-active-storage`
and do so automatically when `--skip-active-record` is used.
*bogdanvlviv*
* Gemfile for new apps: upgrade redis-rb from ~> 3.0 to 4.0.
*Jeremy Daer*
* Add `mini_magick` to default `Gemfile` as comment.
*Yoshiyuki Hirano*
* Derive `secret_key_base` from the app name in development and test environments.
Spares away needless secret configs.
*DHH*, *Kasper Timm Hansen*
* Support multiple versions arguments for `gem` method of Generators.
*Yoshiyuki Hirano*
* Add `--skip-yarn` option to the plugin generator.
*bogdanvlviv*
* Optimize routes indentation.
*Yoshiyuki Hirano*
* Optimize indentation for generator actions.
*Yoshiyuki Hirano*
* Skip unused components when running `bin/rails` in Rails plugin.
*Yoshiyuki Hirano*
* Add `git_source` to `Gemfile` for plugin generator.
*Yoshiyuki Hirano*
* Add `--skip-action-cable` option to the plugin generator.
*bogdanvlviv*
* Deprecate support for using a `Rails::Application` subclass to start Rails server.
*Yuji Yaginuma*
* Add `ruby x.x.x` version to `Gemfile` and create `.ruby-version`
root file containing the current Ruby version when new Rails applications are
created.
*Alberto Almagro*
* Support `-` as a platform-agnostic way to run a script from stdin with
`rails runner`
*Cody Cutrer*
* Add `bootsnap` to default `Gemfile`.
*Burke Libbey*
* Properly expand shortcuts for environment's name running the `console`
and `dbconsole` commands.
*Robin Dupret*
* Passing the environment's name as a regular argument to the
`rails dbconsole` and `rails console` commands is deprecated.
The `-e` option should be used instead.
Previously:
$ bin/rails dbconsole production
Now:
$ bin/rails dbconsole -e production
*Robin Dupret*, *Kasper Timm Hansen*
* Allow passing a custom connection name to the `rails dbconsole`
command when using a 3-level database configuration.
$ bin/rails dbconsole -c replica
*Robin Dupret*, *Jeremy Daer*
* Skip unused components when running `bin/rails app:update`.
If the initial app generation skipped Action Cable, Active Record etc.,
the update task honors those skips too.
*Yuji Yaginuma*
* Make Rails' test runner work better with minitest plugins.
By demoting the Rails test runner to just another minitest plugin —
and thereby not eager loading it — we can co-exist much better with
other minitest plugins such as pride and minitest-focus.
*Kasper Timm Hansen*
* Load environment file in `dbconsole` command.
Fixes #29717.
*Yuji Yaginuma*
* Add `rails secrets:show` command.
*Yuji Yaginuma*
* Allow mounting the same engine several times in different locations.
Fixes #20204.
*David Rodríguez*
* Clear screenshot files in `tmp:clear` task.
*Yuji Yaginuma*
* Add `railtie.rb` to the plugin generator
*Tsukuru Tanimichi*
* Deprecate `capify!` method in generators and templates.
*Yuji Yaginuma*
* Allow irb options to be passed from `rails console` command.
Fixes #28988.
*Yuji Yaginuma*
* Added a shared section to `config/database.yml` that will be loaded for all environments.
*Pierre Schambacher*
* Namespace error pages' CSS selectors to stop the styles from bleeding into other pages
when using Turbolinks.
*Jan Krutisch*
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/railties/CHANGELOG.md) for previous changes.
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/railties/CHANGELOG.md) for previous changes.

View file

@ -7,10 +7,10 @@ module Rails
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end

View file

@ -7,10 +7,10 @@ module Rails
end
module VERSION
MAJOR = 5
MINOR = 2
MAJOR = 6
MINOR = 0
TINY = 0
PRE = "beta2"
PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end