2016-04-05 79 views
10

我在rails中使用了this method模態。它工作得很好,但我已經升級到了Rails 5 beta3,現在它不適用於生產。Rails 5忽略/ lib類?

我得到這個錯誤:

Completed 500 Internal Server Error in 22ms (ActiveRecord: 0.9ms) 

NameError (uninitialized constant ApplicationController::ModalResponder): 

app/controllers/application_controller.rb:26:in `respond_modal_with' 
app/controllers/tools_controller.rb:28:in `new' 

是我繼承揭去使用Rails 5?

class ModalResponder < ActionController::Responder/lib和發展工作...

尋找與軌道5的變化信息,而且來源有限,據我所知。

+2

這看起來像是Rails 5.0.0中的一個bug。它在Beta版之後也是存在的。對我而言,它只發生在生產中,而不是發展中。 –

回答

6

您需要添加一個「要求」(上application.rb中)與你的類的lib內夾。

像:

require './lib/someclass'

我建議你把它放在一個Rails插件裏。

+0

你能描述一下使它成爲插件的最佳過程嗎?我將lib文件移動到了我的/ app目錄中,以便將其包含在內,但這可能不是最好的? –

+1

當然!你可以閱讀更多關於rails插件[這裏](http://guides.rubyonrails.org/plugins.html)。最好測試一下,你可以在插件中添加加載文件設置。只需創建一個插件並移動你的lib文件夾,我建議創建一個'Foo'文件來添加需求。在你的application.rb項目中添加require'foo'。對不起我的英語哈哈。 –

+0

您還可以使用以下命令來使用lib文件夾:'config.autoload_paths << Rails.root.join('lib')' –

-1

它說它無法找到ApplicationController::Responder這是從Rails 4.2中移出到一個單獨的寶石。

添加gem 'responders'到你的Gemfile在lib

的類不被自動加載,你必須要求他們

+0

我有lib目錄自動加載在我的application.rb ... –

+1

我可以選擇這個作爲答案,如果你可以提供爲什麼lib不自動加載的推理。這個答案不夠詳細,不值得檢查。 –

15

更改此:

config.autoload_paths << Rails.root.join('lib') 

這樣:

config.eager_load_paths << Rails.root.join('lib') 

eager_load_paths將得到即時加載在生產和點播的發展。這樣做,你不需要明確要求每個文件。

查看更多有關this answer的信息。