2012-04-18 12 views
7

私は最初のGem for Railsのリリースに取り掛かっています。これはかなりシンプルですが、設定オプションの設定にアクセスする必要があります。私は、ユーザーに 'config/initializers'に何かを入れて、それに私の宝石と結びつけたいと思っています。Rails Gem用の設定方法

質問:私は、Railsの宝石に設定オプションを提供するためのベストプラクティスはありますか?私は開発を支援エンジンで

答えて

11

Forem、我々はこのようなトップレベルの定数にmattr_accessorsを使用します。

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 
... 

forem.rb libに/次にconfig/initializersの内側に、我々はにユーザーに尋ねます

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

短い宝石名では、あまり差はありませんこのソリューションと私が提案するもう1つのソリューションとの間の問題です。


溶液#2

はまだトップレベルの定数にmattr_accessorsを使用しますが、ブロックを取り、オブジェクトを生成し、このモジュールにconfig方法を提供します。

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

この道の人々はできる:

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

完璧、ありがとう! –

関連する問題