set encoding to binmode for pipe
Restore ActiveRecord states after a rollback for models w/o callbacks

This fixes a regression (#13744) that was caused by 67d8bb9.

In 67d8bb9, we introduced lazy rollback for records, such that the
record's internal states and attributes are not restored immediately
after a transaction rollback, but deferred until they are first
accessed.

This optimization is only performed when the model does not have any
transactional callbacks (e.g. `after_commit` and `after_create`).

Unfortunately, the models used to test the affected codepaths all
comes with some sort of transactional callbacks. Therefore this
codepath remains largely untested until now and as a result there are
a few issues in the implementation that remains hidden until now.

First, the `sync_with_transaction_state` (or more accurately,
`update_attributes_from_transaction_state`) would perform the
synchronization prematurely before a transaction is finalized (i.e.
comitted or rolled back). As a result, when the actuall rollback
happens, the record will incorrectly assumes that its internal states
match the transaction state, and neglect to perform the restore.

Second, `update_attributes_from_transaction_state` calls `committed!`
in some cases. This in turns checks for the `destroyed?` state which
also requires synchronization with the transaction stae, which causes
an infnite recurrsion.

This fix works by deferring the synchronization until the transaction
has been finalized (addressing the first point), and also unrolled
the `committed!` and `rolledback!` logic in-place (addressing the
second point).

It should be noted that the primary purpose of the `committed!` and
`rolledback!` methods are to trigger the relevant transactional
callbacks. Since this code path is only entered when there are no
transactional callbacks on the model, this shouldn't be necessary. By
unrolling the method calls, the intention here (to restore the states
when necessary) becomes more clear.
Merge pull request #13751 from chancancode/ar_rollback_fix

Restore ActiveRecord states after a rollback for models w/o callbacks
spring gem moved to rails/spring
Merge pull request #13756 from huoxito/rails-spring

spring gem moved to rails/spring
Spring in now under rails/spring [ci skip]
Merge pull request #13759 from raysrashmi/rails-spring

Spring in now under rails/spring [ci skip]
Update Changelog, Spring is under rails/spring [ci skip]
Merge pull request #13762 from robertomiranda/spring-under-rails

Update Changelog, Spring is under rails/spring [ci skip]
Merge pull request #13745 from nextgearcapital/master

set encoding for pipe to binary mode
Add link to upgrade guide for full list of deprecated finders [ci skip]
Update Error Message when secrets.secret_key_base isn't given
Merge pull request #13765 from robertomiranda/secrets_token

Update Error Message when secrets.secret_key_base isn't given
Correcting link that is pointing to Rails blog [ci skip]
Merge pull request #13768 from rajeshthummalapally/rails_blog_correct_patch_link

Fix for incorrect link that is pointing to Rails blog [ci skip]
Fix a typo that says you application [ci skip]
Merge pull request #13769 from arelenglish/fix_typo_upgrad_guide

Fix a typo that says you application [ci skip]
Merge pull request #13767 from zzak/doc_4_1_release_notes_deprecated_finders

Add link to upgrade guide for full list of deprecated finders [ci skip]
Fix secrets.yml path in exception message

The file is config/secrets.yml, not config/initializers/secrets.yml.
let's link to the gem README not to the upgrading guide. [ci skip]

The PR #13767 added link to the upgrading guide to explain
details about activerecord_deprecated-finders. However the link target
features a stack of changes not releated at all. Also the relevant details
are not very informative.

I think we better link to the README so people can see what the gem is about
and how to use it.

/cc @chancancode @zzak