aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Raise exception when calling to_h in a unfiltered ParametersRafael Mendonça França2017-04-182-17/+19
| | | | | | | | | | | | | | | | Before we returned either an empty hash or only the always permitted parameters (:controller and :action by default). The previous behavior was dangerous because in order to get the attributes users usually fallback to use to_unsafe_h that could potentially introduce security issues. The to_unsafe_h API is also not good since Parameters is a object that quacks like a Hash but not in all cases since to_h would return an empty hash and users were forced to check if to_unsafe_h is defined or if the instance is a ActionController::Parameters in order to work with it. This end up coupling a lot of libraries and parts of the application with something that is from the controller layer.
* Test the correct objectRafael Mendonça França2017-04-181-1/+1
|
* Merge pull request #28790 from tjschuck/require_as_time_in_testing_time_helpersRafael França2017-04-181-0/+1
|\ | | | | Explicitly require AS::Time in AS::Testing::TimeHelpers
| * Explicitly require AS::Time in AS::Testing::TimeHelpersT.J. Schuck2017-04-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you just try to use `ActiveSupport::Testing::TimeHelpers` standalone by requiring `active_support/testing/time_helpers`, you currently get an error: `NoMethodError: undefined method `change' for 2017-12-14 01:04:44 -0500:Time` 9f6e82ee4783e491c20f5244a613fdeb4024beb5 added a dependency on `AS::Time` by using `AS::Time#change`. Here's a script to reproduce the error: ```ruby require "bundler/inline" gemfile(true) do source "https://rubygems.org" gem "activesupport", github: "rails/rails" end require "active_support/testing/time_helpers" require "minitest/autorun" class BugTest < Minitest::Test include ActiveSupport::Testing::TimeHelpers def test_stuff travel_to Time.new(2017, 12, 14, 01, 04, 44) do assert true end end end ``` It currently fails for all 5.x.x versions and master. Ideally, this would be backported to `5-0-stable` and `5-1-stable` as well.
* | Merge pull request #28781 from mtsmfm/sumRafael França2017-04-181-23/+45
|\ \ | | | | | | Fix Enumerable#sum redefined warning
| * | Fix Enumerable#sum redefined warningFumiaki MATSUSHIMA2017-04-181-23/+45
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we require 'active_support/core_ext/enumerable' on Ruby 2.4, we'll see following warning because `Enumerable#sum` and `Array#sum` are added in Ruby 2.4. ``` rails/rails/activesupport/lib/active_support/core_ext/enumerable.rb:20: warning: method redefined; discarding old sum ``` The minimal way to fix the warning is `alias sum sum`. ``` $ ruby -v ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux] $ ruby -w -e "def a; end; def a; end" -e:1: warning: method redefined; discarding old a -e:1: warning: previous definition of a was here $ ruby -w -e "def a; end; alias a a; def a; end" ``` But this behavior is not intended. (@amatsuda was told by @ko1) So we should use `alias` as a meaningful way. Ruby 2.4's `sum` (`orig_sum`) assumes an `identity` is `0` when we omit `identity` so we can delegate to `orig_sum` with explicit `identity` only. In a strict sense, we can detect `identity` by check instance's class but we don't care at this time about that because calling `Enumerable#sum` is rare. In many cases, we will call `Array#sum`.
* | Revert "Merge pull request #28788 from ↵Rafael Mendonça França2017-04-181-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | tjschuck/require_as_notifications_in_cache" This reverts commit b86631d9d9f12d834868ff44735ff551668bfb8a, reversing changes made to 8776a7139757d0b264785c774d4e7f37d4bc1ac7. ActiveSupport::Notifications is loaded using autoload that is defined by the top level file of `active_support`. All the frameworks of Rails requires the top level files before using any of the others files inside the framework because the top level file is what setup the autoload hooks and require the common dependencies.
* | Merge pull request #28788 from tjschuck/require_as_notifications_in_cacheAndrew White2017-04-181-0/+1
|\ \ | |/ |/| Explicitly require AS::Notifications in AS::Cache
| * Explicitly require AS::Notifications in AS::CacheT.J. Schuck2017-04-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Right now, if you install the current release version of Active Support (5.0.2) and try to use its cache implementation standalone by requiring `active_support/cache`, it crashes with `NameError: uninitialized constant ActiveSupport::Notifications`. `AS::Notifications` is used in `cache.rb` down around [line 555](https://github.com/rails/rails/blob/8776a7139757d0b264785c774d4e7f37d4bc1ac7/activesupport/lib/active_support/cache.rb#L555). Here's a quick repro script: ```ruby require "bundler/inline" gemfile(true) do source "https://rubygems.org" gem "activesupport", "5.0.2" end require "active_support/cache" cache_store = ActiveSupport::Cache::MemoryStore.new cache_store.write('test', 'okay') puts cache_store.read('test') ``` However, any version _newer_ than 5.0.2 passes. This is because [this commit](https://github.com/rails/rails/commit/75924c4517c8f87712d3f59c11f10152ed57b9d8) inadvertently included `AS::Notifications` into `AS::Cache` (thus fixing the issue) by mixing [`AS::Deprecation` into `AS::Duration`](https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/duration.rb#L4), giving you a nice require chain of [`Cache` including `Time`][1] [including `Duration`][2] [including `Deprecation`][3] [including `Behaviors`][4] [including `Notifications`][5]. Phew. Aside from being not very explicit, the fact that the fixing is specifically done by `AS::Deprecation` means that this fix is probably only temporary (until the deprecation is removed). This PR just makes the inclusion explicit to future-proof against this breakage. (Ideally, this would also be backported to `5-0-stable` to get picked up in any subsequent point release.) See also: https://github.com/rails/rails/pull/14667 [1]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/cache.rb#L6 [2]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/time.rb#L2 [3]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/duration.rb#L4 [4]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/deprecation.rb#L16 [5]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/deprecation/behaviors.rb#L1
* | Use more specific check for :format in route pathAndrew White2017-04-182-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current check for whether to add an optional format to the path is very lax and will match things like `:format_id` where there are nested resources, e.g: resources :formats do resources :items end Fix this by using a more restrictive regex pattern that looks for the patterns `(.:format)`, `.:format` or `/` at the end of the path. Note that we need to allow for multiple closing parenthesis since the route may be of this form: get "/books(/:action(.:format))", controller: "books" This probably isn't what's intended since it means that the default index action route doesn't support a format but we have a test for it so we need to allow it. Fixes #28517.
* | Add missing periodsJon Moss2017-04-171-2/+2
| | | | | | | | [ci skip]
* | Merge pull request #28782 from kmayer/kmayer-doc-to-timeJon Moss2017-04-171-0/+3
|\ \ | | | | | | Add more explanation to to_time about timezones
| * | Add (more) documentation to to_timeKen Mayer2017-04-171-0/+3
| |/ | | | | | | | | There's a difference in the results between `Date#to_time(:local)` and `Date#in_time_zone` but it is subtle and can confuse users (like me :-).
* / Small docs fixJon Moss2017-04-171-1/+1
|/ | | | | | | Add missing word "programming", to clarify what type of language Ruby is ;) [ci skip]
* Merge pull request #28775 from doughsay/masterAndrew White2017-04-171-1/+2
|\ | | | | Add Puerto Rico support to ActiveSupport::TimeZone
| * There are actually only 134 unique timezones.Chris Dosé2017-04-161-1/+1
| |
| * Add Puerto Rico support to ActiveSupport::TimeZoneChris Dosé2017-04-161-0/+1
| |
* | Merge pull request #28778 from henziger/add_missing_word_in_generators_guideKasper Timm Hansen2017-04-171-1/+1
|\ \ | | | | | | Add missing word 'to' [ci skip]
| * | Add missing word 'to' [ci skip]Eric Henziger2017-04-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | While the original sentence is easy to understand, adding the 'to' is imho a bit more correct. Sources: * https://ell.stackexchange.com/q/16964 * https://www.usingenglish.com/forum/threads/127099-It-is-referred-as-or-It-is-referred-to-as
* | | Merge pull request #28685 from rails/smooth-form-with-upgradingKasper Timm Hansen2017-04-177-13/+107
|\ \ \ | |/ / |/| | Smooth form with upgrading
| * | Add `form_with_generates_remote_forms` config.Kasper Timm Hansen2017-04-164-5/+7
| | | | | | | | | | | | | | | | | | | | | Allows users to not have remote forms by default, since there's more JS harness, e.g. bundling rails-ujs, otherwise. Also don't skip creating defaults file anymore. Sprockets isn't the only new config.
| * | Default embed_authenticity_token_in_remote_forms to nil.Kasper Timm Hansen2017-04-164-8/+100
| | | | | | | | | | | | | | | | | | | | | Effectively treat nil values as "auto", e.g. whatever a form helper chooses to interpret it as. But treat an explicitly assigned false value as disabling.
* | | Fix the doc on the `IndexDefinition` [ci skip]Ryuta Kamizono2017-04-171-1/+1
| | | | | | | | | | | | Since 1a92ae83 all `indexes` methods are under the `SchemaStatements`.
* | | Small grammar fixJon Moss2017-04-161-1/+1
| | | | | | | | | | | | [ci skip]
* | | Small grammar fixesJon Moss2017-04-161-2/+2
| |/ |/| | | | | [ci skip]
* | Merge pull request #28773 from kamipo/support_descending_indexesMatthew Draper2017-04-178-71/+128
|\ \ | | | | | | Support Descending Indexes for MySQL
| * | Support Descending Indexes for MySQLRyuta Kamizono2017-04-164-4/+14
| | | | | | | | | | | | | | | | | | | | | 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.
| * | Refactor `indexes` things in connection adaptersRyuta Kamizono2017-04-166-67/+114
| | | | | | | | | | | | | | | | | | | | | * Use keyword arguments in `IndexDefinition` to ease to ignore unused options and to avoid to initialize incorrect empty value. * Place it in `SchemaStatements` for consistency. * And tiny tweaks.
* | | Bump the bundled GlobalID version.Kasper Timm Hansen2017-04-161-5/+5
| | |
* | | Let run_secrets_generator handle chdir.Kasper Timm Hansen2017-04-161-3/+1
| | |
* | | Merge pull request #28631 from y-yagi/fix_28618Kasper Timm Hansen2017-04-164-18/+31
|\ \ \ | |/ / |/| | Use the config value directly when call `secrets`
| * | Use the config value directly when call `secrets`yuuji.yaginuma2017-04-164-18/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, `read_encrypted_secrets` is set with initializer. Therefore if refer to `secrets` in config, `read_encrypted_secrets` is false, so can not get the value of `secrets.yml.enc`. In order to be able to refer to secrets in config, modified to refer to `config.read_encrypted_secrets` when calling `secrets`. Fixes #28618.
* | | Revert parts of cad58fbJon Moss2017-04-151-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Changelog links at the top of the components, and lowercased the 'c' in notable changes. Personally, the styling isn't super important to me, but it's what we always done in previous guides, so I figured it's better to keep with what we've always done. [ci skip]
* | | Merge pull request #28638 from bogdanvlviv/prepend_and_append_in_rubyKasper Timm Hansen2017-04-151-2/+2
|\ \ \ | |_|/ |/| | Prevent aliases Array#append and Array#prepend
| * | Prevent aliases Array#append and Array#prependbogdanvlviv2017-04-021-2/+2
| | | | | | | | | | | | https://github.com/ruby/ruby/commit/f57d515d69b7a35477b9ba5d08fe117df1f1e275
* | | Merge pull request #28709 from prathamesh-sonpatki/release-notes-1Kasper Timm Hansen2017-04-151-22/+72
|\ \ \ | | | | | | | | Started adding release notes for Rails 5.1 [ci skip]
| * | | Started adding release notes for Rails 5.1 [ci skip]Prathamesh Sonpatki2017-04-091-22/+72
| | | |
* | | | Merge pull request #28767 from kamipo/rename_to_association_query_valueAndrew White2017-04-153-8/+9
|\ \ \ \ | | | | | | | | | | Rename `association_query_handler.rb` to `association_query_value.rb`
| * | | | Rename `association_query_handler.rb` to `association_query_value.rb`Ryuta Kamizono2017-04-153-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since `AssociationQueryHandler` and `PolymorphicArrayHandler` has removed in #28715, only exists `AssociationQueryValue` and `PolymorphicArrayValue` in these files.
* | | | | Merge pull request #28768 from kamipo/early_return_array_handlerKasper Timm Hansen2017-04-151-4/+3
|\ \ \ \ \ | |/ / / / |/| | | | Early return in `PredicateBuilder::ArrayHandler`
| * | | | Early return in `PredicateBuilder::ArrayHandler`Ryuta Kamizono2017-04-151-4/+3
|/ / / / | | | | | | | | | | | | Partitioning to `values` and `nils` is unneeded before early return.
* | | | Merge pull request #28765 from y-yagi/fix_module_name_typoRyuta Kamizono2017-04-151-10/+10
|\ \ \ \ | |_|_|/ |/| | | Fix module name [ci skip]
| * | | Fix module name [ci skip]yuuji.yaginuma2017-04-151-10/+10
|/ / / | | | | | | | | | Replace `FormOptionHelper` to `FormOptionsHelper`.
* | | Merge pull request #28760 from rails/fix-attributes_nameAaron Patterson2017-04-144-12/+30
|\ \ \ | | | | | | | | Move around AR::Dirty and fix _attribute method
| * | | Move around AR::Dirty and fix _attribute methodAaron Patterson2017-04-144-12/+30
|/ / / | | | | | | | | | | | | | | | We already have a _read_attribute method that can get the value we need from the model. Lets define that method in AM::Dirty and use the existing one from AR::Dirty rather than introducing a new method.
* | | Merge pull request #28661 from ↵Aaron Patterson2017-04-144-4/+35
|\ \ \ | | | | | | | | | | | | | | | | bogdanvlviv/fix-dirty-attributes-if-override-attr_accessor Fix inconsistency with changed attributes when overriding AR attribute reader
| * | | Fix inconsistency with changed attributes when overriding AR attribute readerbogdanvlviv2017-04-124-4/+35
| | | |
* | | | Add additional options to time `change` methodsAndrew White2017-04-146-15/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Support `:offset` in `Time#change` and `:zone` or `:offset` in `ActiveSupport::TimeWithZone#change`. Fixes #28723.
* | | | Merge pull request #28715 from ↵Andrew White2017-04-144-60/+32
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/convert_association_queries_to_poro_queries Convert association queries to PORO queries
| * | | | `AssociationQueryValue#queries` returns an array for more concise ↵Ryuta Kamizono2017-04-112-14/+7
| | | | | | | | | | | | | | | | | | | | association handling