簡體   English   中英

RoR應用程序在本地運行良好,但是在Heroku上運行時使用來自/ lib的錯誤

[英]RoR app works fine locally, but errors when using a from /lib when run on Heroku

我的RoR應用程序在本地運行時運行良好,但是當我在Heroku上運行時,此行出錯:

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

錯誤:

NameError (uninitialized constant NotesController::Docreader):

Docreader.rb位於lib文件夾中

我嘗試了heroku restart ,但是沒有幫助。 我究竟做錯了什么? 謝謝閱讀。

可能的罪魁禍首是Docreader.rb的大寫字母D 您需要確保將其命名為docreader.rb所有小寫​​字母。 Heroku使用區分大小寫的文件系統,因此混合大小寫的文件將在OS X或Windows本地運行,但在Heroku上不行。

通常,不建議在Ruby on Rails的文件名中使用任何大寫字母(並且小寫也是Ruby中的事實上的標准),因為Rails的自動加載代碼始終使用小寫。

讓我的模塊在Heroku上運行時,我遇到了類似的問題。 除了@wuputah聲明的自動加載命名約定外,我發現由於Rails在Heroku的生產環境中做出的線程安全假設,還必須使用模塊代碼(即使在我的production.rb文件中已將其注釋掉)。 )在模塊上調用“ include”之前,一旦我“需要”模塊文件,一切就開始起作用。

請看這篇關於如何在Heroku中正確加載模塊的優秀文章:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM