2010-11-16 2 views
1

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

https://github.com/plataformatec/simple_form

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

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

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

+0

создать некоторый патч для жемчужины simple_form с вашими функциями и предложить его. – shingara

+0

Хммм. Я подумал об этом, но я думаю, что у них есть функции, которые я предпочитаю не по определенной причине. Кроме того, я думаю, что изучение того, как переопределить некоторые аспекты драгоценного камня, поможет мне узнать больше о Ruby! Спасибо хоть. – blastula

ответ

0

Вы говорите о monkey patching? Предположим, что ваш драгоценный камень имеет класс в файле

# 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. Просто убедитесь, что выход вашего патча обезьяны не сломает что-то еще в драгоценном камне.

+0

Ах, ха! Я пытался сделать то же самое и поместить его в lib ... это имеет смысл. Благодаря! – blastula