How to continue to use Rails.application.secrets in Rails >= 7.2

yegorov

Artem Yegorov

Posted on October 21, 2024

How to continue to use Rails.application.secrets in Rails >= 7.2

You could notice that in Rails 7.1 shown warning message in logs:

W, [2024-10-21T15:34:51.142815 #472855]  WARN -- : DEPRECATION WARNING: `Rails.application.secrets` is deprecated in favor of `Rails.application.credentials` and will be removed in Rails 7.2.
Enter fullscreen mode Exit fullscreen mode

Yes, of course, you can transfer all the contents of the file config/secrets.yml to config/credentials/production.yml.enc by using

EDITOR=vim rails credentials:edit --environment production

But as for me, for an existing project, I want to stay on a simpler storage technology for configuration. In order to continue using the storage of configuration in the file config/secrets.yml.
You only have to add one line to the configuration in your rails app:

# your config/application.rb file
module MyApp
  class Application < Rails::Application
    # ...
    config.secrets = config_for(:secrets)
    # ...
  end
end
Enter fullscreen mode Exit fullscreen mode

Next, replace all your appeals to Rails.application.secrets with Rails.configuration.secrets, e.g.:

class MyController < ApplicationController
  def index
    # my_var = Rails.application.secrets.dig(:my_config, :my_var)
    my_var = Rails.configuration.secrets.dig(:my_config, :my_var)
    # ...
  end
  # ...
end
Enter fullscreen mode Exit fullscreen mode

Some useful links:

If you have comments and suggestions, I will gladly read them in the comments.
Thank you for reading, good day to you!

💖 💪 🙅 🚩
yegorov
Artem Yegorov

Posted on October 21, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related