2012-02-28 4 views
1

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

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. 

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

+0

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

ответ

-1

Это просто одна из заданных возможностей! Foo - это зарезервированное Слово. Ruby также резервирует слова, которые уже используются в качестве имени модели/модуля. Например, вы также не можете создать модель под названием Configuration eaven.

+0

- это зарезервированное слово Foo в рельсах? В соответствии с рельсами doc следующие зарезервированы, и foo здесь не упоминается. Http://wiki.rubyonrails.org/rails/pages/reservedwords –

+0

Это не официальный и не полный список. Если это не Модель, созданная пользователем, тогда это должно быть зарезервированное слово. – davidb

+0

Вопрос не в названии 'Foo', это был общий общий пример, предназначенный для абстрагирования проблемы и позволяющий сомневаться в том, что он имеет отношение к более широкой аудитории. – rudolph9

2

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

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

Module.constants.include? "Foo" 
+0

Это не совсем ответ на вопрос, но, безусловно, полезный ответ. – rudolph9

0

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

0

Szuper сложно! Для меня название модели застряло в памяти в системе Spring 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

Смежные вопросы