Вставка новых ассоциаций после последних ассоциаций в файл в генераторе 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 выбрана окончательная связь, но при запуске генератора контент вставляется после каждой связи.

Что не так с моим регулярным выражением?

0 ответов

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