gpt4 book ai didi

ruby-on-rails - 如何处理 Rails Gem 的配置

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:14 25 4
gpt4 key购买 nike

我正在努力发布我的第一个 Rails 版 Gem。这非常简单,但我需要提供一些设置配置选项的权限。我想让用户在“config/initializers”中放入一些东西,然后将其与我的 gem 绑定(bind)。

因此,问题是:在 Rails gem 中提供配置选项是否有最佳实践?

最佳答案

在我帮助开发的引擎中,Forem ,我们在顶级常量上使用 mattr_accessors,如下所示:

lib/forem.rb

module Forem
mattr_accessor :user_class, :theme, :formatter, :default_gravatar, :default_gravatar_image,
:user_profile_links, :email_from_address, :autocomplete_field,
:avatar_user_method, :per_page
...

然后在 config/initializers 中,我们要求用户像这样设置它们:

Forem.user_class = 'User'
Forem.autocomplete_field = :login

使用简短的 gem 名称,此解决方案与我将建议的另一个解决方案之间没有太大区别。


解决方案#2

仍然在你的顶级常量上使用 mattr_accessors 但在这个模块上提供一个 config 方法,它接受一个 block 并产生对象:

module ReallyComplicatedGemName
mattr_accessor :....
def self.config(&block)
yield(self)
end
...

人们可以通过这种方式:

ReallyComplicatedGemName.config do |config|
config.user_class = "User"
...
end

关于ruby-on-rails - 如何处理 Rails Gem 的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com