2010-08-31 55 views
1

運行使用錯誤時,從/ lib目錄時,在本地運行我的RoR應用程序工作正常,但是當我在Heroku上運行它,它錯誤在這條線:RoR的應用程序工作正常當地,但是當在Heroku

my_reader = Docreader.new(params[:doc]) 

錯誤:

NameError (uninitialized constant NotesController::Docreader): 

Docreader.rb位於lib文件夾

我試過heroku restart,但它並沒有幫助。我究竟做錯了什麼?謝謝閱讀。

回答

1

可能的罪魁禍首是Docreader.rb中的大寫字母D。您需要確保其名稱爲docreader.rb - 全部使用小寫字母。 Heroku使用區分大小寫的文件系統,所以混合大小寫文件可以在OS X或Windows本地工作,但不能在Heroku上使用。

一般來說,建議不要在Ruby on Rails的文件名中使用任何大寫字母(而小寫字母也是Ruby中的事實標準),因爲Rails的自動加載代碼總是使用小寫字母。

0

我有一個類似的問題,讓我的模塊在Heroku上運行。除了@wuputah聲明的自動加載命名約定之外,我發現由於Heroku上Rails生產環境的線程安全假設,必須要求使用模塊代碼(即使它已在我的production.rb文件中註釋掉了)。 )只要在模塊上調用「include」之前「需要」模塊文件,一切都開始工作。

請看看在得到模塊的主題這個優秀的文章,在Heroku的正確加載:

http://www.williambharding.com/blog/technology/rails-3-autoload-modules-and-classes-in-production/

相關問題