aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Reduce string allocations in read/write_attributeEugene Kenny2018-10-212-8/+6
| | | | | | | | | When `attr_name` is passed as a symbol, it's currently converted to a string by `attribute_alias?`, and potentially also `attribute_alias`, as well as by the `read_attribute`/`write_attribute` method itself. By converting `attr_name` to a string up front, the extra allocations related to attribute aliases can be avoided.
* Merge pull request #34219 from wilddima/datetime-exception-messageRyuta Kamizono2018-10-212-3/+14
|\ | | | | Add message to exception in datetime type
| * Add new exception message to datetime from hash castwilddima2018-10-212-3/+14
| |
* | Use String#truncate_bytes inside Multibyte::Chars#limitFrancesco Rodríguez2018-10-202-31/+1
| |
* | Merge pull request #34265 from olivierlacan/flexbox-guides-indexJeremy Daer2018-10-205-37/+73
|\ \ | | | | | | Improve layout of Rails Guides index
| * | Replace outdated Rails Guides logoOlivier Lacan2018-10-193-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous version wasn’t matching the Rails Guides logo source file listed at https://github.com/rails/homepage/blob/master/materials/rails_guides_logo.psd somehow. It was also a GIF when an 8-bit PNG results in a smaller file (2KB vs 4KB) which should be just as widely compatible with browsers. And that’s just for the 1x version. I added a new 2x version for “retina” or high-density displays and a CSS @media query to progressively enhance with this high density version of the logo. I’ve ensured that this query is supported across browsers by using vendor-specific versions when necessary. See: https://caniuse.com/#feat=css-media-resolution [ci skip]
| * | Shorten unnecessarily long names for GuidesOlivier Lacan2018-10-191-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The names are only used in the Guides Index overlay and several of them are longer than they need to be. For example “Ruby on Rails” is mentioned over and over again in the Release Notes section although these are obviously all Rails versions we’re listing. There’s a Maintenance Policy category with a Maintenance Policy article which is redundant. Policies makes much more sense as a category. Similarly, Contributing to Ruby on Rails is both a category and an article. “Contributions” is a better category title. “Ruby on Rails Guides Guidelines” is a gigantic mouthful. We are *in* the Rails Guides, we don’t need to specify what guides we’re talking about here. As a final added advantage, all of these shortenings make the index much easier to parse in order to find an article. [ci skip]
| * | Use CSS flexbox for Guides index menuOlivier Lacan2018-10-192-20/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This notably allows us to tile each category without pushing the page down vertically as much as we previously did on any viewport wider than mobile sizes. It also means we can fit more guides which will become useful in the future since we have several new guides in the work. Finally the new layout allows three clearly distinct columns to emerge: - Start Here and Rails basics: Models, Views, Controllers, Other Components - Digging Deeper, Extending Rails, Contributing, Maintenance - Release Notes Having Release Notes shoot back up to the top of the third column is great because that makes finding the latest released version and its associated release notes much easier without having to scroll down a bunch. [ci skip]
* | | Consistently use kwargs for `instance_{reader,writer,accessor}` optionsRyuta Kamizono2018-10-202-19/+11
| | | | | | | | | | | | | | | | | | | | | | | | Since #29294, `mattr_acessor` uses kwargs for `instance_reader`, `instance_writer`, and `instance_accessor` options. `thread_mattr_accessor` and `config_accessor` also take the same options, so let's maintain these options handles the same.
* | | Merge pull request #34260 from frodsan/fix/remove-unnecessary-escape-charRyuta Kamizono2018-10-202-4/+4
|\ \ \ | | | | | | | | Remove unnecessary escape character
| * | | Remove unnecessary escape characterFrancesco Rodríguez2018-10-192-4/+4
| | | |
* | | | Missing require "active_support/number_helper/number_converter"Akira Matsuda2018-10-207-0/+14
| | | |
* | | | Missing require "concurrent/hash"Akira Matsuda2018-10-201-0/+1
| | | |
* | | | Missing require "active_support/callbacks"Akira Matsuda2018-10-201-0/+2
| | | |
* | | | ActiveSupport module may not always already defined hereAkira Matsuda2018-10-202-150/+154
| | | | | | | | | | | | | | | | `ruby -ractive_support/core_ext/range/conversions.rb -ep` dies with uninitialized constant ActiveSupport
* | | | Missing require "active_support/dependencies/autoload"Akira Matsuda2018-10-201-0/+2
| | | |
* | | | attribute_accessors no longer uses extract_options since ↵Akira Matsuda2018-10-201-2/+0
| | | | | | | | | | | | | | | | a5b0c60714e1e8d8c182af830a26e1c7c884271d
* | | | Avoid running `webpacker:install` on tests that don't need ityuuji.yaginuma2018-10-202-6/+10
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | If use `run_generator` to run the generator, `--skip-webpack-install` is specified automatically. https://github.com/rails/rails/blob/3101a4136bd62787e252d2658eee23001036fa0f/railties/lib/rails/generators/testing/behaviour.rb#L71 However, when executing the generator independently (for example, to use stub), `webpacker:install` was executed. Since this includes `yarn install`, it should be avoided in unnecessary testing.
* | | Merge pull request #34257 from olivierlacan/verbose-query-logs-guidesRichard Schneeman2018-10-191-6/+43
|\ \ \ | |_|/ |/| | Add guides section on verbose query logs to Debugging
| * | Add guides section on verbose query logs to DebuggingOlivier Lacan2018-10-191-6/+43
| | | | | | | | | | | | | | | | | | | | | | | | Since this is a useful tool in debugging it made sense to document its existence and usage, especially in the console where it's disabled by default. [ci skip]
* | | Avoid running bundler on tests that don't need ityuuji.yaginuma2018-10-191-3/+3
| |/ |/| | | | | | | If the dev option is specified, Gemfile contains gem which specifies GitHub. This will take time to execute, so should avoid it in unnecessary tests.
* | Merge pull request #34256 from y-yagi/make_aj_integration_tests_work_on_ci_2Yuji Yaginuma2018-10-195-18/+30
|\ \ | | | | | | Make AJ integration tests work in CI
| * | Remove an extra `@mutex.synchronize`yuuji.yaginuma2018-10-191-12/+1
| | | | | | | | | | | | | | | | | | | | | | | | Since `@mutex.synchronize` is enforced in the `ensure_connection!` method, there is no need to do so on the caller side. https://github.com/jondot/sneakers/blob/c1b47f9c5d5a95da728bbe1700795790e4efbb12/lib/sneakers/publisher.rb#L22-L26 Due to this, `ThreadError(deadlock; recursive locking)` has occurred.
| * | Replace port number 5433 to 5432 which tests expectyuuji.yaginuma2018-10-191-2/+21
| | | | | | | | | | | | | | | | | | Also, replace the authentication setting. This is necessary for using `psql` with PostgreSQL 10. Ref: https://github.com/travis-ci/travis-ci/issues/9624#issuecomment-389537036
| * | Return a non zero code when can not connect to backend on CIyuuji.yaginuma2018-10-194-4/+8
| |/
* | Merge pull request #34249 from anthonygharvey/fix_testing_guide_typoYuji Yaginuma2018-10-191-1/+1
|\ \ | |/ |/| Fix typo in testing guide
| * Fix typo in testing guideanthonygharvey2018-10-171-1/+1
| |
* | Deprecate Unicode's #pack_graphemes and #unpack_graphemes methodsFrancesco Rodríguez2018-10-183-4/+21
| | | | | | | | in favor of `array.flatten.pack("U*")` and `string.scan(/\X/).map(&:codepoints)`, respectively.
* | Merge pull request #34243 from deivid-rodriguez/fix_generated_gemfile_on_jrubyYuji Yaginuma2018-10-181-1/+1
|\ \ | |/ |/| Fix generated Gemfile missing gems on jruby
| * Fix generated Gemfile missing gems on jrubyDavid Rodríguez2018-10-171-1/+1
| |
* | Don't expose internal `get_value`/`set_value` methodsRyuta Kamizono2018-10-182-11/+9
|/
* Merge pull request #34197 from schneems/schneems/symbol-hash-respond_toRichard Schneeman2018-10-173-12/+11
|\ | | | | ActiveRecord#respond_to? No longer allocates strings
| * ActiveRecord#respond_to? No longer allocates stringsschneems2018-10-153-12/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an alternative to https://github.com/rails/rails/pull/34195 The active record `respond_to?` method needs to do two things if `super` does not say that the method exists. It has to see if the "name" being passed in represents a column in the table. If it does then it needs to pass it to `has_attribute?` to see if the key exists in the current object. The reason why this is slow is that `has_attribute?` needs a string and most (almost all) objects passed in are symbols. The only time we need to allocate a string in this method is if the column does exist in the database, and since these are a limited number of strings (since column names are a finite set) then we can pre-generate all of them and use the same string. We generate a list hash of column names and convert them to symbols, and store the value as the string name. This allows us to both check if the "name" exists as a column, but also provides us with a string object we can use for the `has_attribute?` call. I then ran the test suite and found there was only one case where we're intentionally passing in a string and changed it to a symbol. (However there are tests where we are using a string key, but they don't ship with rails). As re-written this method should never allocate unless the user passes in a string key, which is fairly uncommon with `respond_to?`. This also eliminates the need to special case every common item that might come through the method via the `case` that was originally added in https://github.com/rails/rails/commit/f80aa5994603e684e3fecd3f53bfbf242c73a107 (by me) and then with an attempt to extend in https://github.com/rails/rails/pull/34195. As a bonus this reduces 6,300 comparisons (in the CodeTriage app homepage) to 450 as we also no longer need to loop through the column array to check for an `include?`.
* | Remove and flip `index: true` for `references` in the doc [ci skip]Ryuta Kamizono2018-10-173-9/+9
| | | | | | | | Follow up #32146.
* | Merge pull request #32146 from abhikanojia/association_guide_fixRyuta Kamizono2018-10-171-10/+10
|\ \ | | | | | | | | | | | | Remove index:true option from belongs to as defaults to true. [ci skip]
| * | Remove index:true option from belongs to as defaults to true.abhishekkanojia2018-03-011-10/+10
| | |
* | | Merge pull request #34233 from lucasprag/update_guideYuji Yaginuma2018-10-171-1/+1
|\ \ \ | | | | | | | | Update guide for the counter variable when rendering with the `as:` option
| * | | Update guide for the counter variable when rendering with the `as:` optionLucas Oliveira2018-10-161-1/+1
| | | | | | | | | | | | | | | | [ci skip]
* | | | Consolidate duplicated code that initializing an empty model objectRyuta Kamizono2018-10-172-20/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `init_with` and `init_from_db` are almost the same code except decode `coder`. And also, named `init_from_db` is a little misreading, a raw values hash from the database is already converted to an attributes object by `attributes_builder.build_from_database`, so passed `attributes` in that method is just an attributes object. I renamed that method to `init_with_attributes` since the method is shared with `init_with` to initialize an empty model object.
* | | | Merge pull request #34232 from kamipo/check_versionRyuta Kamizono2018-10-174-27/+29
|\ \ \ \ | |/ / / |/| | | Consistently extract checking version for all adapters
| * | | Consistently extract checking version for all adaptersRyuta Kamizono2018-10-174-27/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I don't prefer to extract it for one adapter even though all adapters also does. Related to #34227.
* | | | Refactor Chars#reverse and Chars#grapheme_lengthFrancesco Rodríguez2018-10-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use \X meta character directly to get grapheme clusters. Thanks to @mtsmfm for the tip: https://github.com/rails/rails/pull/34123#issuecomment-429028878 r? @jeremy
* | | | Merge pull request #34231 from brasscapon/rails_fiveGannon McGibbon2018-10-161-1/+1
|\ \ \ \ | |/ / / |/| | | Fix mapping of content [ci skip]
| * | | Fix mapping of contentAdam Demirel2018-10-171-1/+1
| | | |
* | | | Merge pull request #34227 from bkuhlmann/master-lazy_mysql_version_check_supportAaron Patterson2018-10-161-4/+11
|\ \ \ \ | | | | | | | | | | Refactored abstract MySQL adapter to support lazy version check.
| * | | | Refactored abstract MySQL adapter to support lazy version check.Brooke Kuhlmann2018-10-161-4/+11
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Will allow sub classes to override the protected `#check_version` method hook if desired. For example, this will be most helpful in sub classes that wish to support lazy initialization because the version check can be postponed until the connection is ready to be initialized.
* | | | Merge pull request #34220 from bogdanvlviv/follow-up-33571Gannon McGibbon2018-10-161-3/+3
|\ \ \ \ | | | | | | | | | | Clarify docs of `ActiveJob::TestHelper` [ci skip]
| * | | | Clarify docs of `ActiveJob::TestHelper` [ci skip]bogdanvlviv2018-10-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I found a few sentences that should be updated as well. See https://github.com/rails/rails/pull/33571#discussion_r209435886 Follow up #33571
* | | | | Merge pull request #34203 from ↵Ryuta Kamizono2018-10-161-0/+12
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | albertoalmagro/add-habtm-singular-ids-regression-test Add regression test against has_and_belong_to_many memoized singular_ids
| * | | | | Add regression test against habtm memoized singular_idsAlberto Almagro2018-10-161-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Starting in Rails 5.0.0 and still present in Rails 5.2.1, `singular_ids` got memoized and didn't reload after more items were added to the relation. Although 19c8071 happens to fix the issue, it only adds tests for `has_many` relations while this bug only affected `has_and_belongs_to_many` relations. This commit adds a regression test to ensure it never happens again with `habtm` relations. Ensures #34179 never gets reproduced.