Вставка новых ассоциаций после последних ассоциаций в файл в генераторе Rails с использованием регулярных выражений
Я пытался вставить несколько новых ассоциаций в существующую модель, используя insert_into_file
Метод в пользовательском генераторе. По эстетическим соображениям и во избежание жесткого кодирования я хотел бы вставить их после последних найденных. Я попытался реализовать это с помощью регулярного выражения, которое работает в Rubular, но не при запуске генератора:
def add_associations_to_other_things
content = <<-CONTENT
has_many :things
CONTENT
inject_into_file "app/models/other_things.rb", \
content, \
:after => /(?:(has_and_belongs_to_many|has_many|has_one|belongs_to)[^\n]*$)(?!.*has_and_belongs_to_many|has_many|has_one|belongs_to.*\z)/m
end
На словах это должно найти последнюю связь с новой строкой, за которой не следует больше никаких ассоциаций. m
Параметр option означает, что точки в отрицательном прогнозе должны рассматриваться как символы новой строки, поэтому они должны смотреть в конец файла. В Rubular выбрана окончательная связь, но при запуске генератора контент вставляется после каждой связи.
Что не так с моим регулярным выражением?