处理 Rails3 插件中的设置的适当方法?

发布于 2024-09-12 20:16:47 字数 226 浏览 10 评论 0原文

我正在为 Rails3 开发一个插件。我想允许用户覆盖某些设置。目前,我正在插件的 Rails::Engine 类中执行此操作,如下所示:

config.my_setting = :default_value unless config.respond_to? :my_setting

这似乎是处理此问题的错误方法。大多数插件在 Rails3 中使用更好的方法或约定吗?

I'm working on a plugin for Rails3. I'd like to allow users to override some settings. At the moment I'm doing this inside my plugin's Rails::Engine class like:

config.my_setting = :default_value unless config.respond_to? :my_setting

This seems like the wrong way to handle this. Is there a better method or convention most plugins use in Rails3?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧伤还要旧人安 2024-09-19 20:16:47

我建议人们在 Railtie 中为其设置创建一个新的设置命名空间:

module MyPlugin
  class Railtie < Rails::Railtie
    config.my_plugin = ActiveSupport::OrderedHash.new

    config.my_plugin.some_default = true
    config.my_plugin.some_other_default = false

    initializer "my_plugin.initialize" do |app|
      app.config.my_plugin # the settings, possibly augmented by the user
    end
  end
end

然后,用户可以设置插件的配置或覆盖其 Application 类中的默认值。这是 Rails 在我们内部 Railties 中使用的模式。

就像 Paul 所说,您可以通过创建一个生成器来转储初始化程序,并注释掉所有可能的配置设置以供其使用,从而使事情变得更加容易。

I recommend that people create a new settings namespace for their settings in their Railtie:

module MyPlugin
  class Railtie < Rails::Railtie
    config.my_plugin = ActiveSupport::OrderedHash.new

    config.my_plugin.some_default = true
    config.my_plugin.some_other_default = false

    initializer "my_plugin.initialize" do |app|
      app.config.my_plugin # the settings, possibly augmented by the user
    end
  end
end

Then, the user can set your plugin's config or override defaults in their Application class. This is the pattern Rails uses in our internal Railties.

Like Paul said, you could make it even easier by creating a generator that dumps an initializer with all the possible config settings commented out for their use.

走过海棠暮 2024-09-19 20:16:47

有几种常见方法可以在 Rails 插件中指定配置设置。

我更喜欢有一个包含插件设置的初始化程序文件。通过向插件添加生成器,可以使用默认设置创建此文件。然后,用户可以运行生成器并轻松查看一个文件中的所有插件设置。

查看 client_side_validations 示例

There are a couple common ways to specify configuration settings in a rails plugin.

I prefer to have an initializer file that contains the plugin settings. This file can be created with the default settings by adding a generator to your plugin. Then the user can run the generator and easily see all the plugin settings in one file.

Checkout the client_side_validations for an example

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文