2009-02-24 58 views
5

每次我嘗試使用從我的軌道上運行的任何類2.2應用程序的lib目錄‘腳本/亞軍-e生產ClassName.run’我得到以下錯誤:`const_missing「:未初始化的常數(NameError)

/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/runner.rb:47: 
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:89:in `const_missing': uninitialized constant ClassName (NameError)" 

由於某種原因,我沒有得到這個錯誤,當我運行它作爲test而不是production,並且一切工作正常。

ö耶run是一類方法,即def self.run .... end

任何建議?

回答

10

當ruby找不到類或模塊時發生該錯誤。我想通過開出:

  1. 檢查gem依賴(它們是相同的所有環境?)
  2. 搜索你的代碼的任何定義類名,特別是模塊,類和插件。
  3. 禁用dev中的每個插件,是否有任何插件突然導致該錯誤?
  4. 如果代碼在lib中,將lib require語句添加到您的production.rb中以強制lib在生產中加載。

希望有所幫助。

更新只是爲了總結的意見是選項4

除非你只需要加載的lib在生產中你應該想想確保所有環境中通過執行下列操作之一加載的lib:

  1. 創建一個軌道初始化(下配置/初始化一個文件名爲.rb)與要求在它
  2. 通過啓用和修改config.load_paths變量添加的路徑的lib在配置/ environment.rb中。
+0

就是這樣。問題中缺少的類是我在lib中定義的類。即使是簡單的東西,比如將類名與文件名進行匹配,簡而言之就是它的定義。我不知道我錯過了什麼,因爲它在dev上運行良好,並且 測試只是沒有生產 – chaostheory 2009-02-24 20:18:42

1

我在同一個文件上有多個類定義(所有的STI類)。當我將定義分離到各自的文件中時,它的作品

相關問題