2012-04-18 15 views
7

के लिए कॉन्फ़िगर कैसे करें मैं रेल के लिए अपना पहला जेम जारी करने पर काम कर रहा हूं। यह बहुत आसान है, लेकिन मुझे कॉन्फ़िगरेशन विकल्पों को सेट करने के लिए कुछ पहुंच प्रदान करने की आवश्यकता है। मैं उपयोगकर्ता को 'कॉन्फ़िगर/प्रारंभकर्ता' में कुछ डालना चाहता हूं और अपने मणि के साथ उसमें बांधना चाहता हूं।रेल्स जेम

तो, सवाल यह है: क्या रेल मणि में कॉन्फ़िगरेशन विकल्प प्रदान करने के लिए कोई सर्वोत्तम अभ्यास है?

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 अंदर हम उपयोगकर्ताओं के लिए पूछना:

उत्तर

11

एक इंजन मैं मदद का विकास, Forem में, हम इस तरह शीर्ष स्तर के निरंतर पर mattr_accessors का उपयोग उन्हें इस तरह सेट करें:

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

एक छोटे मणि नाम के साथ, बहुत अलग नहीं है इस समाधान के बीच सीई और दूसरा मैं प्रस्ताव दूंगा।


समाधान # 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

बिल्कुल सही, धन्यवाद! –

संबंधित मुद्दे