Sha256: 4a1a7976d2268a816c6741246c7ddb3ae98299508d97970cbc4e504fac589698

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

module EJSON
  module Rails
    Rails = ::Rails
    private_constant :Rails

    class Railtie < Rails::Railtie
      singleton_class.attr_accessor(:set_secrets)
      @set_secrets = true

      config.before_configuration do
        json_file = json_files.detect { |file| valid?(file) }
        next unless json_file

        secrets = JSON.parse(json_file.read, symbolize_names: true)
        Rails.application.secrets.deep_merge!(secrets) if set_secrets
        # Merging into `credentials.config` because in Rails 7.0, reading a credential with
        # Rails.application.credentials[:some_credential] won't work otherwise.
        Rails.application.credentials.config.deep_merge!(secrets) do |key|
          raise "A credential already exists with the same name: #{key}"
        end
      end

      class << self
        private

        def valid?(pathname)
          pathname.exist?
        end

        def json_files
          [
            Rails.root.join("config", "secrets.json"),
            Rails.root.join("config", "secrets.#{Rails.env}.json"),
          ]
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ejson-rails-0.2.0 lib/ejson/rails/railtie.rb