Я пытаюсь создать свой первый плагин rails, и я хочу, чтобы он был настраиваемым, то есть я хочу иметь возможность устанавливать переменную в файле environment.rb или что-то в этом роде.Как создать настраиваемый плагин Ruby on Rails?
UPDATE: Я пытаюсь сделать что-то вроде того, что сделано здесь: http://soakedandsoaped.com/articles/read/exception-notifier-ruby-on-rails-plugin. Я пробовал имитировать их код, но я не могу заставить его работать.
У меня есть плагин, работающий со значением жестко закодированным, но все, что я пробовал до сих пор, чтобы сделать его настраиваемым, не сработало.
Вот некоторые из кода:
#vendor/plugin/markup/lib/markup_helper.rb
module MarkupHelper
def stylesheet_cache_link_tag(*sources)
cache = assests_cache_dir ? assests_cache_dir : ""
options = sources.extract_options!.stringify_keys
cached_name = options.delete("cached_name")
stylesheet_link_tag(sources, :cache=> File.join(cache, cached_name))
end
def javascript_cache_include_tag(*sources)
cache = assests_cache_dir ? assests_cache_dir : ""
options = sources.extract_options!.stringify_keys
cached_name = options.delete("cached_name")
javascript_include_tag(sources, :cache=> File.join(cache, cached_name))
end
end
#something like the following in config/environment.rb or probably config/environments/production.rb
MarkupConfig.assests_cache_dir = "cache"
я хочу assests_cache_dir по умолчанию «кэш», но быть в состоянии установить в файле конфигурации среды. Я долгое время искал эту тему и не могу найти ничего об этом. Как я могу это сделать?
сладкий, thx! так в чем разница между attr_accessor и mattr_accessor (я новичок в рубине)? – gabe
mattr_accessor только для рельсов и определяет аксессоров на реальном модуле. attr_accessor определяет аксессоров на экземплярах классов (не самих классов). – tomafro
Существует также 'cattr_accessor', который определяет аксессоры на самом классе. –