Avoid defining the test if it does not need to when not on JRuby
Properly assert for the expected messages

The message passed to Minitest's assert_raise is used as output in case
the assertion fails, but we can test against the exact message by using
the actual exception object that is returned from the assert_raise call.
Raise a descriptive error if non-positive integer passed to in_groups_of.

This is more consistent than the current behaviour of raising a
`ZeroDivisionError: divided by 0` error when 0 is given, which can be
non-obvious especially if `in_groups_of` is part of a longer chain of
methods.

The negative case was ok - "ArgumentError: invalid slice size" - but
this error is clearer still.
Merge pull request #16355 from xaviershay/validate-in-groups-of-args

Raise a descriptive error if non-positive integer passed to in_groups_of
Add tests to ensure default proc is used when `HashWithIndifferentAccess' is initialized with a block
Merge pull request #16356 from gchan/add-hwia-tests

Add tests to ensure default proc is used when `HashWithIndifferentAccess' is initialized with a block
Remove unnecessary call to #tap

This is not storying the RouteSet instance anywhere as the other
examples in the file, so no need to use #tap.
Avoid creating an extra hash
Fix assertion arguments order
Avoid a new hash object
Simplify code branch, remove #tap
Merge pull request #16351 from eileencodes/finish-refactoring-macro-to-eliminate-checking-against-symbols

Redefine macro checks for reflections
Refactor join_keys to remove complex conditionals

Pushing conditionals down to through reflection

Only the through association needs the part of this conditional
that deals with belongs to and polymorphic? so that can be pushed
down into the ThroughReflection reducing the conditionals.

Remove conditional because we can delegate join keys to source reflection

Remove need for source_macro checking

By adding join_id_for to the other reflections we remove the need
to cehck against the source_macro and can reduce the conditioanl
from the original join_id_for(owner)

Using polymorphism instead of testing the source_macro

This case statement in join_association is almost exactly the same
as the original join_keys code. Testing taht theory by creating a
new join_dependency_keys(assoc_klass) method.

Refactor join_keys further to be more concise

Fixed format of "#:nodoc:" to "# :nodoc:" where I added them to this
file.
Fix type casting to Decimal from Float with ...

When I defines large precision column at RDBMS,
I assigns float value, raise ArgumentError (precision too large).
Push options check up so we can simplify internal methods
Simplify conditional
Rename variable to better show its intent
Only concatenate path if it was given rather than converting blindly
Do not reassign variable when mutation is happening

These methods mutate the path variable/argument so there is no need
to reassign it every time.
Realign assignments :scissors: