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

相關問題