Настройка / переопределение Rails SimpleForm Gem

Я использую гем Rails SimpleForm, но я думаю, что мой вопрос может быть применим к любому гему.

https://github.com/plataformatec/simple_form

В нем много замечательных функций и настроек, но я хочу пойти еще дальше. Например, мне бы очень хотелось, чтобы в сгенерированной разметке не было классов, вставленных по умолчанию, но мне все же хотелось бы иметь возможность вставлять свои собственные вручную. Я обнаружил, что могу удалить некоторые классы, комментируя строки в файлах gem. Однако это выходит за рамки моего проекта - я бы хотел СУХОЕ решение, которое останется в моем проекте при развертывании в производство, желательно без упаковки всех моих драгоценных камней.

Я полагаю, что это обычная ситуация, которая может применяться к любому драгоценному камню, и я должен иметь возможность полностью или частично переопределить любой драгоценный камень, добавив в свой проект файлы таможни, которые переопределяют драгоценный камень... но я не уверен, как это сделать.

Любая помощь будет оценена! Благодарю.

1 ответ

Решение

Вы говорите об исправлении обезьян? Скажем, у вашего драгоценного камня есть класс в файле

# simple_form_gem/lib/some_file.rb
class A
  def some_method
    puts 'A'
  end
end

Если вы хотите изменить вывод #some_method, вы можете создать файл инициализатора и сделать

# config/initializers/my_monkey_patch_for_simple_form_gem.rb
class A
  def some_method
    puts 'duck punching'
  end
end

Ваш патч обезьяны повлияет только на A#some_method, а не на другие методы в A. Просто убедитесь, что вывод вашего патча обезьяны не сломает что-то еще в геме.

Другие вопросы по тегам