PR #14052 Added a regression where it was only looking for methods in one
level up, So when the method was defined in a 2+ levels up the
inheritance chain, the method was not found as defined.
Refactor numerical constants to module constants which give the numbers
a contextual meaning. This commit aims to provide quicker understanding
for part of the implementation of the
DateHelper#distance_of_time_in_words method.
This gets the whole ActiveModel test suites working even if
`self.i_suck_and_my_tests_are_order_dependent!` is disabled
in `ActiveSupport::TestCase`.
Two places are found that potentially leak global state. This patch
makes sure states are restored so that none of the changes happen in
a single test will be carried over to subsequence tests.
If the options :shallow_prefix and :shallow_path are not set in the
scope options then copy them from the normal :as and :path options
if they are set.
If a developer has specified either :path or :as in the options hash then
these should be used as the defaults for :shallow_path and :shallow_prefix.
Fixes#14241.
By tracking the depth of resource nesting we can push the need for nested
shallow scoping to only those routes that are nested more than one deep.
This allows us to keep the fix for #12498 and fix the regression in #14224.
Fixes#14224.
Originally with_scope_level was exclusively for managing scope levels with
resources, however it is now used for other things so it makes more sense
to move the responsibility for setting the :scope_level_resource to the
resource_scope method. This eliminates repeatedly setting it to the same
resource as each resource method scope is evaluated.
The four code samples that fail to run are:
- Add attribute magic to objects. Fixed by introducing a Person
instance variable.
- Tracking value changes. Fixed by replacing `attr_accessor` with
`define_attribute_methods`, providing getter and setter methods
for `name` and providing the missing `Person#save` method. A
call to `Person#save` has to precede the `person.name = 'robert'`
assignment, if we want `previous_changes` to include 'bob'.
- Adding `errors` interface to objects. Fixed by introducing a
Person instance variable, assigning `nil` to its name and calling
`Person#validate!`.
- Custom validators. Fixed by defining `HasNameValidator` before
it is used by `ValidatorPerson`.
All the code samples can now be run smoothly.
Call Dirty#changes_applied in Person#save, instead of modifying instance vars.
Templates could rely on irregular inflections or external libraries for
instance so we should load the application's initializers when running
the rails:template task.
The introducing commit of this feature is f7f11361 ; the initializers
have never been loaded invoking this task.
Fixes#12133.