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