ActiveRecord: имя уже используется в приложении, где? - PullRequest
1 голос
/ 29 февраля 2012

Я пытаюсь сгенерировать эшафот, но при его создании я получаю следующую ошибку:

rails generate scaffold foo
      invoke  active_record
The name 'Foo' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.

Есть ли команда, чтобы точно определить, где это имя используется в моем приложении?

Ответы [ 4 ]

2 голосов
/ 29 февраля 2012

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

, но вы можете проверить, существует ли имя для какого-либо объекта, выполнив

Module.constants.include? "Foo" 
0 голосов
/ 22 мая 2017

Сзупер хитрый!Для меня название модели застряло в памяти в системе кеша Spring.Нужно было убить процесс spring, чтобы освободить его.

Ищите это при попытке выполнить команду:

Running via Spring preloader in process 57104
Expected string default value for '--serializer'; got true (boolean)
  invoke  active_record
The name 'Admin' is either already used in your application or reserved 
by Ruby on Rails. Please choose an alternative and run this generator 
again.

Если вы видите этот комментарий Spring, попробуйте найти пружину в вашемпроцессы и убийства:

ps -ef | grep spring

найти идентификатор:

501 54701 30654 0 1:43PM ?? 0:04.83 spring app | server | started 8 mins ago | development mode

501 30654 1 0 Tue03PM ttys000 0:03.82 spring server | server | started 142 hours ago

и убить

kill 30654

0 голосов
/ 28 апреля 2015

Используя rubymine, есть несколько способов сделать это. Существует команда «find usages», которая найдет все места, где используются метод, переменная и т. Д. Существует «переход к объявлению», который в вашем случае был бы полезен. Он прыгнет к месту, где что-то определено. (класс, модуль, переменная, метод). есть также мощная функция поиска. В этом случае поиск по пути позволит вам выполнить поиск по всему приложению (включая используемые внешние гемы). Вы можете настроить чувствительность к регистру при поиске, чтобы получить только имена классов / модулей и т. Д.

0 голосов
/ 29 февраля 2012

Это только одна из предоставленных возможностей!Фу является зарезервированным словом.Ruby также резервирует слова, которые уже не используются в качестве имени модели / модуля.Например, вы также не можете создать модель с именем Configuration. Не существует класса, который называется Конфигурация.

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