Trying to pass the current request down to the service so that it can
create full urls instead of paths makes the API messy so use a model
based on ActiveSupport::CurrentAttributes to provide the current host
to services that need it (primarily the disk service).
Addresses rails/rails#32247
Add test that checks identify and analyze work in correct order
Break out direct upload test helper
Review changes for direct-upload test helper
Disable CSRF protection for ActiveStorage::DiskController#update. The local disk service is intended to imitate a third-party service like S3 or GCS, so we don't care where direct uploads originate: they’re authorized by signed tokens.
Closes#30290.
[Shinichi Maeshima & George Claghorn]
Makes tests much more quietly, as opposed to the enormous amount of
logging that appears right now. This setting is used in AJ, as well as
other frameworks.
Output from test run:
```
.........................................................
Finished in 3.003355s, 18.9788 runs/s, 45.2827 assertions/s.
57 runs, 136 assertions, 0 failures, 0 errors, 0 skips
```
If you have a "service/configurations.yml" file, but every single line is
commented out, then an error occurs when running tests:
```
git:active-storage-import~/code/rails/activestorage$ rake
~/code/rails/activestorage/test/test_helper.rb:17:in `<top (required)>': undefined method `deep_symbolize_keys' for false:FalseClass (NoMethodError)
from ~/code/rails/activestorage/test/controllers/direct_uploads_controller_test.rb:1:in `require'
```
The reason is that `YAML.load(..an empty file content..)` simply returns `false`, and not `{}`.
This PR fixes this behavior so tests can also run when no remote service
is available.