我正在尝试生成脚手架但是生成它我收到以下错误:
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 :(得分: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的模型,没有类可以克隆配置。