If a counter_cache exists, use it for #empty?
Fixed a regression introduced in 84cf156

84cf156 (PR #15694) introduced a subtle regression. There are actually three
distinct entry points to creating an AR object – via .new (i.e. #initialize),
via #init_with (e.g. from YAML or database queries) and via .allocate.

With the patch in 84cf156, attribute methods and respond_to? will not work
correctly when objects are allocated directly, without going through either

The reason this test case didn't catch the regression was that the `Topic`
class is shared between test cases, so by the time this test case is ran the
attribute methods are very likely to be defined.

Switching to use a fresh anonymous class in the test to ensure we surface this
problem in the future.
Dont swallow errors when bad alias_method
remove Set.new from DetailsKey::get, impacts rendering overhead performance

Using ruby-prof, I noticed that Set#add had the largest 'self time'
percentage (5% of the overall time spent rendering) when
benchmarking the rendering of a small cached ERB template that was 3
lines long. It turns out it was from this line. I don't believe the
Set is necessary, either. Removing this line increases the rendering
ips using Benchmark::ips accordingly.
Stop using mocha on app_rails_loader_test
Stop using mocha on configuration_test
Set the application logger using configuration
Stop using mocha on console_test
AttributeSet#include? -> AttributeSet#key?

https://github.com/rails/rails/pull/15868/files#r14135210
Add ability to extend `rails server` command options parser

With this change it will be possible to add additional options to the `option_parser` like this:

    require 'rails/commands/server'
    module Rails
      class Server < ::Rack::Server
        class Options
          def option_parser_with_open(options)
            parser = option_parser_without_open options
            parser.on('-o', '--open', 'Open in default browser') { options[:open] = true }
            parser
          end
          alias_method_chain :option_parser, :open
        end

        def start_with_open
          start_without_open do
            `open http://localhost:3000` if options[:open]
          end
        end
        alias_method_chain :start, :open
      end
    end
Treat invalid uuid as nil
[CI SKIP] Doc fix.
Log digest as :debug instead of :info
Merge pull request #16174 from tgxworld/doc_fix

[ci skip] Fix grammar of eager loading for ActiveRecord::Associations
Return an absolute instead of relative path from an asset url in the case of the `asset_host` proc returning nil
Merge pull request #16161 from jpawlyn/master

Fix empty host for an asset url when asset_host proc returns nil
Merge pull request #16175 from skorks/log_digestor_as_debug

Log digest as :debug instead of :info
Merge pull request #16142 from andreychernih/extend-server-options

Add ability to extend `rails server` command options parser
Merge pull request #15266 from dv/use_counter_cache_for_empty_call

If a counter_cache exists, use it for #empty?
Add CHANGELOG entry for #15266