Внесение пользовательских изменений в AssetTagHelper в плагин - PullRequest
0 голосов
/ 30 апреля 2009

Я написал некоторый пользовательский код, который вносит изменения в некоторые методы в ActionView :: Helpers :: AssetTagHelper Пример:

module ActionView
  module Helpers
    module AssetTagHelper
      alias old_existing_method existing_method

      def existing_method
        puts "Does foobar"
        return old_existing_method
      end
    end
  end
end

Теперь обычно я бы оставил этот код в RAILS_ROOT / config / initializers / asset_helper_overrides.rb Это работает как ожидалось.

Теперь я хочу превратить это в плагин.

Я скопировал этот файл в папку с плагином, и я бы потребовал его в файле init.rb. Тем не менее, это не похоже на работу. Я не уверен, почему это не работает.

Полагаю, возможно, это потому, что файл необходим перед тем, как требуются ActionView :: Helpers. Не уверен.

Может ли кто-нибудь помочь мне здесь. Спасибо.

1 Ответ

0 голосов
/ 30 апреля 2009

Я бы предложил создать для этого модуль и включить его в помощник. Вот пример:

module AssetTagExtensions
  def self.included(base)
    base.alias_method_chain :existing_method, :added_cleverness
  end

  def existing_method_with_added_cleverness
    puts "Does foobar"
    existing_method_without_added_cleverness
  end
end

Затем в вашем файле init.rb вы должны сделать что-то вроде:

ActionView::Helpers::AssetTagHelper.module_eval do
  include AssetTagExtensions
end

Важно вызывать module_eval (или send) для класса ActionView::Helpers::AssetTagHelper, а не открывать его повторно, чтобы убедиться, что вы не препятствует правильной загрузке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...