Конфигурация Rails Engine - PullRequest
7 голосов
/ 29 мая 2011

Я разрабатываю Rails Engine, который обрабатывает механизм OAuth с третьей стороной. Я хотел бы иметь всю конфигурацию в атрибуте Struct, поэтому все данные конфигурации двигателя хранятся вместе:

require 'rails'


module ThirdParty
  class Engine < ::Rails::Engine

    initializer "third-party.some_init_task" do |app|
      ThirdPartyConfig = Struct.new(:uri, :client_id, :client_secret, :redirect_uri)

      app.config.thirdparty = ThirdPartyConfig.new
      app.config.thirdparty.uri = "https://thirdparty.com"
      app.config.thirdparty.client_id = ""
      app.config.thirdparty.client_secret = ""
      app.config.thirdparty.redirect_uri = ""
    end
  end
end

Некоторые настройки должны быть определены в инициализаторах уровня приложения:

class Application < Rails::Application

    config.thirdparty.client_id = <valid_client_id>
    config.thirdparty.client_secret = <valid_client_secret>
    config.thirdparty.redirect_uri = <redirect_uri>
end

Но так как config.thirdparty все еще не определен при загрузке инициализатора приложения, он завершается ошибкой.

Ответы [ 2 ]

7 голосов
/ 30 мая 2011

Попробуйте указать порядок загрузки инициализатора в вашем движке. Вы должны быть в состоянии принудительно загрузить его до запуска конфигурации приложения. Вот предположение, в котором вы хотите загрузить инициализатор

initializer "third-party.some_init_task", :before=> :load_config_initializers do |app|

Если это не сработает, попробуйте загрузить его перед другим инициализатором.

0 голосов
/ 26 февраля 2016
...