ActiveRecord:应用程序中已经使用的名称,在哪里?

时间:2012-02-28 21:09:52

标签: ruby-on-rails

我正在尝试生成脚手架但是生成它我收到以下错误:

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 个答案:

答案 0 :(得分:2)

我认为没有办法找到任何对象/类/模块的文件或来源。 rails也有开放类概念,因此可以在许多文件中定义或改进类,因此我们无法跟踪它。

但您可以按照

检查任何对象的名称是否存在
Module.constants.include? "Foo" 

答案 1 :(得分:0)

使用rubymine,有几种方法可以做到这一点。有一个"发现用法"命令将找到使用方法,变量等的所有位置。有一个"跳转到声明"在你的情况下,这将是有用的。它将跳转到定义某些内容的位置。 (类,模块,变量,方法)。还有一个强大的搜索功能。在这种情况下,搜索路径将允许您搜索整个应用程序(包括正在使用的外部宝石)。您可以在搜索中强制区分大小写,仅生成类/模块名称等。

答案 2 :(得分: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评论,请尝试在您的流程中查找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

答案 3 :(得分:-1)

这只是给定的可能性之一! Foo是一个保留字。 Ruby还保留了尚未用作模型/模块名称的单词。例如,你也无法创建一个名为Configuration eaven的模型,没有类可以克隆配置。