7
我正在发布我的第一个Gem for Rails。这很简单,但我需要提供一些设置配置选项的权限。我想让用户把一些东西放在'config/initializers'中,并与我的宝石绑定。如何处理Rails配置Gem
所以,问题是:在Rails gem中提供配置选项是否有最佳做法?
我正在发布我的第一个Gem for Rails。这很简单,但我需要提供一些设置配置选项的权限。我想让用户把一些东西放在'config/initializers'中,并与我的宝石绑定。如何处理Rails配置Gem
所以,问题是:在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
用一个简短的宝石名称,没有太多differen这个解决方案与另一个我会建议的解决方案之间。
溶液#2
还在用mattr_accessors
上顶层恒定的,但是提供这种模块上的config
方法,它采用一个块并产生该对象:
module ReallyComplicatedGemName
mattr_accessor :....
def self.config(&block)
yield(self)
end
...
这人们可以这样做:
ReallyComplicatedGemName.config do |config|
config.user_class = "User"
...
end
完美,谢谢! – 2012-04-18 18:05:02