Sha256: ef0275d86ffd2447f0af18931a8770b4b0649827b480c0ff249baa5ed2e722f5

Contents?: true

Size: 888 Bytes

Versions: 2

Compression:

Stored size: 888 Bytes

Contents

# frozen_string_literal: true

require 'active_support/core_ext/integer/time'

module CloudflareRails
  class Railtie < Rails::Railtie
    # setup defaults before we configure our app.
    DEFAULTS = {
      expires_in: 12.hours,
      timeout: 5.seconds
    }.freeze

    config.before_configuration do |app|
      app.config.cloudflare = ActiveSupport::OrderedOptions.new
      app.config.cloudflare.reverse_merge! DEFAULTS
    end

    initializer 'cloudflare_rails.configure_rails_initialization' do
      Rack::Request::Helpers.prepend CheckTrustedProxies

      ObjectSpace.each_object(Class)
                 .select do |c|
        c.included_modules.include?(Rack::Request::Helpers) &&
          c.included_modules.exclude?(CheckTrustedProxies)
      end
        .map { |c| c.prepend CheckTrustedProxies }

      ActionDispatch::RemoteIp.prepend RemoteIpProxies
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cloudflare-rails-6.2.0 lib/cloudflare_rails/railtie.rb
cloudflare-rails-6.1.0 lib/cloudflare_rails/railtie.rb