Tips&Tricks: Пользовательская конфигурация вашего кода (gem’а)
июля 21, 2012 | Published in Ruby, Ruby Gems, Tips&Tricks, Расширения | 2 Comments
Часто необходимо пользователям gem’ов позволить настраивать их на свой вкус. Как это сделать — об этом эта маленькая статья.
Добавление возможности конфигурирования делается очень просто, наиболее часто для этого используется специальный класс, но если конфигурация совсем простая, то можно обойтись Struct или хэшем. В примере ниже приведена реализация на основе класса Config, однако ее легко можно модифицировать так, чтобы использовался Struct или хэш. Очевидно, что вариант с классом конфигурации наиболее гибкий, а вариант с хэшем наиболее простой.
module MyGem @config = Config.new def self.config if block_given? # если блок передан, то вызываем его и передаем в него объект конфигурации yield @config else # если блок не передан - просто возвращаем объект конфигурации return @config end end # Модуль MyGem::Password - пример использования конфига module Password def self.encrypt puts "Encrypted with #{MyGem.config.algorithm}." end end def self.show_config @config.show_config end # класс конфигурации class Config attr_accessor :salt_size, :pepper, :algorithm def initialize # значения параметров конфигурации по умолчанию @salt_size = 32 @pepper = "&5:L4g$f7T@m<79IgA" @algorithm = :bcrypt end def show_config puts <<-CONFIG Salt size: #{salt_size} Pepper: #{pepper} Algorithm: #{algorithm} CONFIG end end end
Пример использования:
# пользовательская настройка MyGem.config do |config| config.salt_size = 64 config.algorithm = "md5" end # демонстрация настроек: MyGem.show_config # Salt size: 64 # Pepper: &5:L4g$f7T@m<79IgA # Algorithm: md5 # в действии: MyGem::Password.encrypt # Encrypted with md5.
Как видите все очень просто!
сентября 13, 2012 at 12:33 (#)
А можно поподробнее :(
Сделал файл app/controllers/countmin/count_min.rb куда закинул код из первого блока.
сделал файл config/initializers/count_min.rb — сюда вот это:
MyGem.config do |config|
config.salt_size = 64
config.algorithm = «md5″
end
Во вью делаю: MyGem.show_config (в контроллере тож делал). выдается ошибка, что данный модуль не знает такой метод. ЧТо я делаю не так?
сентября 13, 2012 at 13:09 (#)
Разобрался) затупил)