2014-05-14 50 views
1

an answer to the question關於如何使lib文件夾中的類以開發模式重新加載,而無需重新啓動服務器並部分工作。自動重新加載lib文件夾中的類會導致在自動加載常量時檢測到循環依賴關係

所以,我插入以下行development.rb文件:

ActiveSupport::Dependencies.autoload_paths << File::join(Rails.root, 'lib') 
ActiveSupport::Dependencies.explicitly_unloadable_constants.concat(['MyClass1', 'MyClass2']) 

,是的,該類重新加載到第一源的變化,但在第二個變化,我得到一個例外:

Circular dependency detected while autoloading constant MyClass2 

爲什麼拋出的異常是MyClass2而不是MyClass1?因爲我直接實例化它,MyClass1稍後用於MyClass2

下面是一些代碼:

中的類lib\my_class1.rb

require 'httpclient/include_client' 

class MyClass2 
    attr_reader :id, :login, :money, :info 

    def initialize(parameters) 
    @id = parameters['idUsers'] 
    @login = parameters['login'] 
    @money = parameters['money'] 
    @info = parameters['info'] 
    end 
end 

class MyClass1 
    def initialize(parameters) 
    @base_url = parameters[:base_url] 
    @version = parameters[:version] 
    end 

    def get_test_data 
    { huhu: "testvalue7"} 
    end 
end 

控制器:

require 'my_class1' 

class MyClassTestController < ApplicationController 
    skip_before_filter :authenticate_user! 

    def get_test_data_test 
    ls = MyClass1.new({ base_url: 'http://192.168.0.25', version: '1'}) 
    @res = ls.get_test_data 
    end 
end 

回答

1

嘿保羅感謝更新,但我還沒有發現在你的代碼中的任何錯誤..你可以檢查這個鏈接它可以幫助你解決你的問題。 http://teohm.com/blog/2013/01/10/reload-required-files-in-rails/

+0

模型中沒有代碼。或者你認爲lib文件夾中的類也是一個模型?我已經更新了這個問題。附:您應該明白,只要接受答案出現在這裏,此答覆及其所有評論就應該刪除。我希望接受的答案是你的,所以你會誠實地提升你的聲望。 – Paul

相關問題