2012-09-26 105 views
1

如果我在其中鍵入'n'並返回,則Rails 3.2.7控制檯會退出。這不是IRB的特徵; n在那裏被視爲未申報的變量。用滑軌控制檯搜索'n'(毫不奇怪)沒有任何結果。爲什麼Rails控制檯退出'n'?

有人可以解釋爲什麼Rails引入了這個別名?

回答

0

該方法被debugger寶石添加到主對象。正如@weexpectedTHIS指出的,這不會發生在一個香草Rails應用程序。取消註釋gem 'debugger'bundle install,和n作爲退出。


只是爲了好玩,我以爲我會拋出一些我的偵探工作。在irb中可調用的方法似乎是main對象上的方法。它似乎並不像您可以通過名稱引用主:

1.9.3p194 :013 > main 
    NameError: undefined local variable or method `main' for main:Object 

,但你仍然可以得到的主要對象:

1.9.3p194 :014 > self 
=> main 

我已經Tab鍵完成對我的IRB控制檯的對象,但對於由於某些原因,它獲取額外的結果,當我不使用它在一個名爲變量可用於當前範圍:

1.9.3p194 :001 > a = self 
=> main 
1.9.3p194 :002 > self. 
Display all 6870 possibilities? (y or n) 
1.9.3p194 :002 > a. 
Display all 178 possibilities? (y or n) 

< 200方法是skimmable,通過有那麼瀏覽,我可以看到n確實是主要對象上的一種方法。只是爲了驗證,輸入:

a.n 

殺死控制檯。這意味着,現在我可以找出它的定義,其中:

1.9.3p194 :002 > a.method(:n).source_location 
=> ["/Users/erichu/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/extend-command.rb", 143] 

我被困在這裏,因爲該文件動態分配方法很多,但都不是我能與命令「N」辨別。

一位同事建議我在新鮮的Rails應用中試試這個,這讓我嘗試了不同的寶石。快速瀏覽清單後,debugger看起來更可能是一種選擇。

對於任何讀到此爲止的人,我會很樂意再次接受另一個可以解釋debugger寶石引入n的地方和原因的答案。

1

對於我來說這不會發生在rails 3.1.3上。這是一個新的錯誤還是有什麼是在你的軌道初始值設定項中加載的嗎?

+0

剛剛在一個Rails 3.0.9應用程序上試過這個,我也有同樣的事情發生。你可能是對的,它是一個初始值設定項 –

相關問題