From 1c383df324fdf0b68b3f54a649eb7d2a4f55bcb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Tue, 30 Jan 2018 18:51:17 -0500 Subject: Start Rails 6.0 development!!! :tada::tada::tada: --- Gemfile.lock | 80 +-- RAILS_VERSION | 2 +- actioncable/CHANGELOG.md | 33 +- actioncable/lib/action_cable/gem_version.rb | 6 +- actioncable/package.json | 2 +- actionmailer/CHANGELOG.md | 32 +- actionmailer/lib/action_mailer/gem_version.rb | 6 +- actionpack/CHANGELOG.md | 246 +-------- actionpack/lib/action_pack/gem_version.rb | 6 +- actionview/CHANGELOG.md | 78 +-- actionview/lib/action_view/gem_version.rb | 6 +- actionview/package.json | 2 +- activejob/CHANGELOG.md | 28 +- activejob/lib/active_job/gem_version.rb | 6 +- activemodel/CHANGELOG.md | 66 +-- activemodel/lib/active_model/gem_version.rb | 6 +- activerecord/CHANGELOG.md | 668 +----------------------- activerecord/lib/active_record/gem_version.rb | 6 +- activestorage/CHANGELOG.md | 34 +- activestorage/lib/active_storage/gem_version.rb | 6 +- activestorage/package.json | 2 +- activesupport/CHANGELOG.md | 506 +----------------- activesupport/lib/active_support/gem_version.rb | 6 +- guides/CHANGELOG.md | 9 +- railties/CHANGELOG.md | 163 +----- railties/lib/rails/gem_version.rb | 6 +- version.rb | 6 +- 27 files changed, 89 insertions(+), 1928 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2d4c3e1383..fe533acf84 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/RAILS_VERSION b/RAILS_VERSION index 5d41efd0ef..747766c587 100644 --- a/RAILS_VERSION +++ b/RAILS_VERSION @@ -1 +1 @@ -5.2.0.beta2 +6.0.0.alpha diff --git a/actioncable/CHANGELOG.md b/actioncable/CHANGELOG.md index 38bf842b14..72f5c5de35 100644 --- a/actioncable/CHANGELOG.md +++ b/actioncable/CHANGELOG.md @@ -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. diff --git a/actioncable/lib/action_cable/gem_version.rb b/actioncable/lib/action_cable/gem_version.rb index d72ba18acd..cd1d9bccef 100644 --- a/actioncable/lib/action_cable/gem_version.rb +++ b/actioncable/lib/action_cable/gem_version.rb @@ -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 diff --git a/actioncable/package.json b/actioncable/package.json index 8d7f9ff302..d9df46043d 100644 --- a/actioncable/package.json +++ b/actioncable/package.json @@ -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": [ diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index 04bbae8495..b2a1c570e5 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -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. diff --git a/actionmailer/lib/action_mailer/gem_version.rb b/actionmailer/lib/action_mailer/gem_version.rb index 6a7dd0a212..72eb5d61e8 100644 --- a/actionmailer/lib/action_mailer/gem_version.rb +++ b/actionmailer/lib/action_mailer/gem_version.rb @@ -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 diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index a952eade08..184ebecca9 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -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. diff --git a/actionpack/lib/action_pack/gem_version.rb b/actionpack/lib/action_pack/gem_version.rb index 97f4934b58..37969fcb57 100644 --- a/actionpack/lib/action_pack/gem_version.rb +++ b/actionpack/lib/action_pack/gem_version.rb @@ -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 diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index c38e11dc38..ea7f8b205e 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -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. diff --git a/actionview/lib/action_view/gem_version.rb b/actionview/lib/action_view/gem_version.rb index ff7f2bb853..77ae444a58 100644 --- a/actionview/lib/action_view/gem_version.rb +++ b/actionview/lib/action_view/gem_version.rb @@ -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 diff --git a/actionview/package.json b/actionview/package.json index 787ae06208..624eb5de93 100644 --- a/actionview/package.json +++ b/actionview/package.json @@ -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": [ diff --git a/activejob/CHANGELOG.md b/activejob/CHANGELOG.md index ff8375e690..ec99b5d975 100644 --- a/activejob/CHANGELOG.md +++ b/activejob/CHANGELOG.md @@ -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. diff --git a/activejob/lib/active_job/gem_version.rb b/activejob/lib/active_job/gem_version.rb index 49dfd4095e..770f70dc5e 100644 --- a/activejob/lib/active_job/gem_version.rb +++ b/activejob/lib/active_job/gem_version.rb @@ -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 diff --git a/activemodel/CHANGELOG.md b/activemodel/CHANGELOG.md index 86353674d9..13ea7d0bf3 100644 --- a/activemodel/CHANGELOG.md +++ b/activemodel/CHANGELOG.md @@ -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. diff --git a/activemodel/lib/active_model/gem_version.rb b/activemodel/lib/active_model/gem_version.rb index 3c344fe854..cef5441e4a 100644 --- a/activemodel/lib/active_model/gem_version.rb +++ b/activemodel/lib/active_model/gem_version.rb @@ -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 diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 05a44fe760..d73c0859ee 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -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. diff --git a/activerecord/lib/active_record/gem_version.rb b/activerecord/lib/active_record/gem_version.rb index 7e47dac016..72035a986b 100644 --- a/activerecord/lib/active_record/gem_version.rb +++ b/activerecord/lib/active_record/gem_version.rb @@ -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 diff --git a/activestorage/CHANGELOG.md b/activestorage/CHANGELOG.md index 061898d143..6354ab9924 100644 --- a/activestorage/CHANGELOG.md +++ b/activestorage/CHANGELOG.md @@ -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. diff --git a/activestorage/lib/active_storage/gem_version.rb b/activestorage/lib/active_storage/gem_version.rb index f048bb0b77..492620731b 100644 --- a/activestorage/lib/active_storage/gem_version.rb +++ b/activestorage/lib/active_storage/gem_version.rb @@ -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 diff --git a/activestorage/package.json b/activestorage/package.json index 621706000b..ec77dc391d 100644 --- a/activestorage/package.json +++ b/activestorage/package.json @@ -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": [ diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 29d6119113..c9cf63f7b5 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -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. diff --git a/activesupport/lib/active_support/gem_version.rb b/activesupport/lib/active_support/gem_version.rb index 1e09adbb52..c951ad16a3 100644 --- a/activesupport/lib/active_support/gem_version.rb +++ b/activesupport/lib/active_support/gem_version.rb @@ -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 diff --git a/guides/CHANGELOG.md b/guides/CHANGELOG.md index 518b6abfb3..64e8b51817 100644 --- a/guides/CHANGELOG.md +++ b/guides/CHANGELOG.md @@ -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. diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 0658c4b55c..b3b35307e3 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -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. diff --git a/railties/lib/rails/gem_version.rb b/railties/lib/rails/gem_version.rb index 2cc861a1bd..54bfbdd516 100644 --- a/railties/lib/rails/gem_version.rb +++ b/railties/lib/rails/gem_version.rb @@ -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 diff --git a/version.rb b/version.rb index 2cc861a1bd..54bfbdd516 100644 --- a/version.rb +++ b/version.rb @@ -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 -- cgit v1.2.3