2014-05-14 1 views
1

lib 폴더의 클래스를 만드는 방법에 대한 설명이 an answer to the question 인 경우 서버를 다시 시작하지 않고 개발 모드로 다시로드하고 부분적으로 작업했습니다.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이 사용됩니다.

클래스 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

관련 문제