aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #28807 from oiorain/oiorain-callbackChain-commentKasper Timm Hansen2017-04-201-1/+0
|\ | | | | Remove outdated comment
| * Remove outdated commentMarion Bouguet2017-04-201-1/+0
|/ | | Since 3aee9126aa6309538ee64064dcabcd34d7cc7d26, this class hasn't inherited from Array.
* Merge pull request #28733 from kamipo/dont_fallback_to_utf8mb3_after_mysql_8.0.0Rafael França2017-04-193-10/+12
|\ | | | | Don't fallback to utf8mb3 after MySQL 8.0.0
| * Don't fallback to utf8mb3 after MySQL 8.0.0Ryuta Kamizono2017-04-173-10/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `internal_string_options_for_primary_key` is used for creating internal tables in newly apps. But it is no longer needed after MySQL 8.0.0. MySQL 5.7 has introduced `innodb_default_row_format` (default `DYNAMIC`) and has deprecated `innodb_large_prefix` and `innodb_file_format`. The purpose of the deprecated options was for compatibility with earlier versions of InnoDB. https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_large_prefix > innodb_large_prefix is deprecated and will be removed in a future release. innodb_large_prefix was introduced in MySQL 5.5 to disable large index key prefixes for compatibility with earlier versions of InnoDB that do not support large index key prefixes. https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_file_format > The innodb_file_format option is deprecated and will be removed in a future release. The purpose of the innodb_file_format option was to allow users to downgrade to the built-in version of InnoDB in MySQL 5.1. Now that MySQL 5.1 has reached the end of its product lifecycle, downgrade support provided by this option is no longer necessary. The deprecated options has removed in MySQL 8.0.0. It is no longer needed to take care newly created internal tables as a legacy format after MySQL 8.0.0. Fixes #28730.
* | Merge pull request #28776 from kamipo/respect_limit_for_cache_keyRafael França2017-04-192-8/+44
|\ \ | | | | | | `cache_key` respects the limit in a relation even if a relation is not loaded
| * | `cache_key` respects the limit in a relation even if a relation is not loadedRyuta Kamizono2017-04-172-8/+44
| |/ | | | | | | | | | | `cache_key` includes the size of a relation. But if a relation is not loadded, the size is not respected even if a relation has a limit. It should be respected for consistency.
* | Merge pull request #28708 from y-yagi/dont_generate_system_test_filesRafael França2017-04-192-0/+15
|\ \ | | | | | | Don't generate system test files if `skip_system_test` option is specified
| * | Don't generate system test files if `skip_system_test` option is specifiedyuuji.yaginuma2017-04-122-0/+15
| | |
* | | Fix all style guides violationsRafael Mendonça França2017-04-1919-33/+33
| | | | | | | | | | | | | | | Closes #28382 Closes #28651
* | | Use released sass-rails instead of master versionRafael Mendonça França2017-04-191-1/+1
| | |
* | | Merge pull request #28757 from edwardmp/log-actioncable-write-read-errorsRafael França2017-04-192-1/+8
|\ \ \ | | | | | | | | Log any write errors originating from the socket
| * | | Log any errors originating from the socketedwardmp2017-04-162-1/+8
| | | |
* | | | Merge pull request #28166 from bogdanvlviv/fix_migration_tasksRafael França2017-04-193-6/+78
|\ \ \ \ | | | | | | | | | | Fix migration tasks
| * | | | Add additional raise UnknownMigrationVersionErrorbogdanvlviv2017-04-193-6/+43
| | | | | | | | | | | | | | | | | | | | | | | | | Raise error on the movement of migrations when the current migration does not exist.
| * | | | Fix `bin/rails db:forward` first migrationbogdanvlviv2017-04-193-1/+36
| | | | |
* | | | | Merge pull request #28800 from Shopify/deprecation_includes_gem_name_and_versionRafael França2017-04-195-16/+56
|\ \ \ \ \ | | | | | | | | | | | | Include gem name and deprecation horizon when calling the deprecation behaviors
| * | | | | Send deprecation horizon and gem name as arguments to deprecation heavier ↵Willem van Bergen2017-04-195-16/+56
| |/ / / / | | | | | | | | | | | | | | | handler, and make sure they are used for the ActiveSupport::Notifications message.
* | | | | Merge pull request #28734 from rafaelfranca/strong-parametersRafael França2017-04-1912-91/+168
|\ \ \ \ \ | | | | | | | | | | | | Improve the upgrade path of Strong Parameters
| * | | | | Reuse the Parameters#to_h check in the routing helpersRafael Mendonça França2017-04-1810-39/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since this protection is now in Parameters we can use it instead of reimplementing again.
| * | | | | Follow the style guide rules in the documetationRafael Mendonça França2017-04-181-30/+30
| | | | | |
| * | | | | Improve documentationRafael Mendonça França2017-04-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We are talking about a list of parameters even so we need to use plural. Even if we were talking about the instance of the Parameters object we would have to use the capital and monospaced font.
| * | | | | Implement ActionController::Parameters#to_query and #to_paramRafael Mendonça França2017-04-182-5/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously it was raising an error because it may be unsafe to use those methods in a unpermitted parameter. Now we delegate to to_h that already raise an error when the Parameters instance is not permitted. This also fix a bug when using `#to_query` in a hash that contains a `ActionController::Parameters` instance and was returning the name of the class in the string.
| * | | | | Use the right assetions to better error messagesRafael Mendonça França2017-04-181-7/+7
| | | | | |
| * | | | | Add test to make sure that to_unsafe_h don't mutate the targetRafael Mendonça França2017-04-181-0/+10
| | | | | |
| * | | | | Add ActionController::Parameters#to_hash to implict conversionRafael Mendonça França2017-04-182-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now methods that implicit convert objects to a hash will be able to work without requiring the users to change their implementation. This method will return a Hash instead of a HashWithIndefirentAccess to mimic the same implementation of HashWithIndefirentAccess#to_hash.
| * | | | | 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
| | | | | |
* | | | | | Reword sentenceJon Moss2017-04-191-3/+3
| |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sentence had some awkward grammar and was kind of confusing, tried to make it easier to understand what it was trying to say :) [ci skip]
* | | | | Merge branch 'master' of github.com:rails/docrailsVijay Dev2017-04-191-1/+1
|\ \ \ \ \
| * | | | | [ci skip] Change ++ by markdown quotesMikhail Dieterle2017-04-081-1/+1
| | | | | |
* | | | | | Merge pull request #28794 from vishalzambre/activerecord-guidRafael França2017-04-191-5/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | [ci skip] Changed plain text to NOTE.
| * | | | | | [ci skip] Changed plain text to NOTE.vishalzambre2017-04-191-5/+5
| | | | | | |
* | | | | | | Merge pull request #28793 from ↵Andrew White2017-04-191-3/+4
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | kamipo/use_quoted_scope_to_respect_current_database Use `quoted_scope` rather than `@config[:database]` to respect current database
| * | | | | | Fix `extract_expression_for_virtual_column` for MariaDBRyuta Kamizono2017-04-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm not sure why `Mysql2VirtualColumnTest#test_schema_dumping` passed previously. But now the test not pass at least in MariaDB 10.1.9. I fixed the regexp to respect `COLLATE`. ``` % ARCONN=mysql2 be ruby -w -Itest test/cases/adapters/mysql2/virtual_column_test.rb -n test_schema_dumping Using mysql2 Run options: -n test_schema_dumping --seed 7131 F Finished in 0.466304s, 2.1445 runs/s, 4.2890 assertions/s. 1) Failure: Mysql2VirtualColumnTest#test_schema_dumping [test/cases/adapters/mysql2/virtual_column_test.rb:55]: Expected /t\.virtual\s+"upper_name",\s+type: :string,\s+as: "UPPER\(`name`\)"$/i to match "# This file is auto-generated from the current state of the database. Instead\n# of editing this file, please use the migrations feature of Active Record to\n# incrementally modify your database, and then regenerate this schema definition.\n#\n# Note that this schema.rb definition is the authoritative source for your\n# database schema. If you need to create the application database on another\n# system, you should be using db:schema:load, not running all the migrations\n# from scratch. The latter is a flawed and unsustainable approach (the more migrations\n# you'll amass, the slower it'll run and the greater likelihood for issues).\n#\n# It's strongly recommended that you check this file into your version control system.\n\nActiveRecord::Schema.define(version: 0) do\n\n create_table \"virtual_columns\", force: :cascade, options: \"ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci\" do |t|\n t.string \"name\"\n t.virtual \"upper_name\", type: :string, as: \n t.virtual \"name_length\", type: :integer, as: \"LENGTH(`name`)\", stored: true\n end\n\nend\n". 1 runs, 2 assertions, 1 failures, 0 errors, 0 skips ``` ``` > select @@version; +--------------------+ | @@version | +--------------------+ | 10.1.9-MariaDB-log | +--------------------+ 1 row in set (0.00 sec) ```
| * | | | | | Use `quoted_scope` rather than `@config[:database]` to respect current databaseRyuta Kamizono2017-04-191-2/+3
|/ / / / / / | | | | | | | | | | | | | | | | | | Related #28399.
* | | | | | Merge pull request #28791 from y-yagi/date_time_fields_from_listRafael França2017-04-181-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | Remove datetime fields from helper list [ci skip]
| * | | | | | Remove datetime fields from helper list [ci skip]yuuji.yaginuma2017-04-191-1/+1
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `datetime_field` is an alias of the `datetime_local_field`, there is no helper to generate datetime fields. Ref: #25469
* | | | | | Merge pull request #28161 from bogdanvlviv/add_test_attributesRafael França2017-04-181-0/+11
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Add test for method `#attributes`
| * | | | | Add test for method `#attributes`bogdanvlviv2017-02-251-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActiveRecord::AttributeMethods#attributes Extracted from https://github.com/rails/rails/pull/28159
* | | | | | 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 :-).