2012-02-28 44 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

其实我知道那里的命名问题是来自的。我正在寻找的是一个命令,告诉我名字在哪里使用。我可以看到我的自我在更大的应用程序和rake命令上遇到问题,或者在情况发生时会非常有用 – rudolph9 2012-02-28 21:27:38

回答

-1

那只是给定的可能性之一! Foo是保留字。 Ruby还预留了未被用作模型/模块名称的单词。例如,你也不能创建一个名为Configuration eaven的模型,没有哪个类将cls配置为cl。

+0

在Foo中是Foo保留字?根据轨道下面的文件保留和foo没有提到这里http://wiki.rubyonrails.org/rails/pages/reservedwords – 2012-02-28 22:09:25

+0

这既不是一个官方的,也不是一个完整的清单。如果它不是用户创建的模型,那么它需要是保留字。 – davidb 2012-02-28 22:20:19

+0

这个问题并不涉及名称'Foo',而是一个通用的例子,旨在抽象出问题并使问题与更广泛的受众相关。 – rudolph9 2012-02-28 22:45:03

2

我不认为有办法找到任何对象/类/模块的文件或来源。另外,rails具有公开的类概念,因此可以在许多文件中定义或优化类,因此我们无法跟踪相同的内容。

,但你可以检查,如果名称是由以下

Module.constants.include? "Foo" 
+0

这并不完全回答这个问题,但肯定是一个有用的答案。 – rudolph9 2012-02-28 22:46:42

0

使用的RubyMine存在任何物体,还有你可以做到这一点的几种方法。有一个“查找用法”命令可以查找所有使用方法,变量等的位置。有一个“跳转到声明”,在你的情况下是有用的。它将跳转到定义事物的地方。 (一个类,模块,变量,方法)。还有一个强大的搜索功能。在这种情况下,搜索路径将允许您搜索整个应用程序(包括正在使用的外部宝石)。你可以在搜索时强制区分大小写,只产生类别/模块名称等。

0

Szuper棘手!对我来说,模型名称被卡在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

找到ID:

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

相关问题