Rails raises exception when config.active_storage.service is not explicitly set
source link: https://blog.saeloun.com/2022/11/02/exception-active-record-config
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Rails raises exception when config.active_storage.service is not explicitly set
Nov 2, 2022 , by Swaathi Kakarla
1 minute read
ActiveStorage makes it easy for developers to upload files to cloud services like Amazon S3, Google Cloud Storage,
and more.
It also provides a local disk service for development
and testing.
Rails reads the config value config.active_storage.service
to determine which service to use.
If this value is not set,
Rails will raise an exception.
However, when the config.active_storage.service
is not set,
the application raises a vague error causing unnecessary time lost to debugging.
Before
This value is set in the environment file via the rails active_storage:install
command.
However, in some cases it can be removed or commented out.
Let’s use a simple example to demonstrate this.
We have a User
model with an avatar
attachment.
class User < ApplicationRecord
has_one_attached :avatar
end
When we try to upload an avatar, we get the following error:
/Users/swaathi/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/activestorage-7.0.4/app/models/active_storage/blob.rb:90:in `build_after_unfurling': missing keyword: :filename (ArgumentError)
This is a cryptic error that does not give us any indication of what the problem is.
It takes significant effort to figure out that the config.active_storage.service
is not set.
After
Thanks to this PR
ActiveStorage gives much more descriptive errors when the config.active_storage.service
is not set.
/Users/swaathi/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/bundler/gems/rails-1d849dfbe8f0/activestorage/lib/active_storage/attached/model.rb:226:in `validate_global_service_configuration': Missing Active Storage service name. Specify Active Storage service name for config.active_storage.service in config/environments/development.rb (RuntimeError)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK