0

我正在通过 gem 实现omniAuth 身份验证系统,我需要在加载 gem 之前初始化一个常量。

设想:

开发人员应该将该常量写入配置文件,重新启动其服务器,并且应该在加载 gem 之前初始化该常量。

我试图把它放在一个config/initializers/omniauth.rb文件中,但在加载服务器时出现错误

unitialized constant OmniAuth::Strategies::Xyz::URL.

我以这种方式将它写在 gem 中:

OmniAuth::Strategies::Xyz::URL= "http://my_account.com"
4

1 回答 1

1

如果您想在将 gem 加载到 Rails 应用程序之前设置一个常量,您可以将它放在语句config/application.rb之前。Bundler.require但是,由于尚未加载任何 gem,您可能会在设置这样一个深度嵌套的常量时遇到麻烦。

做到这一点的正确方法是不要依赖常量进行配置。制作适当的配置对象。您可以制作Railtie来为 Rails 本身添加适当的配置选项,并定义正确的钩子,例如to_prepare在正确的时间开始加载 gem 的配置。

于 2013-09-13T11:53:58.190 回答