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
모델에는 코드가 없습니다. 또는 lib 폴더의 클래스도 모델이라고 생각하십니까? 질문을 업데이트했습니다. 추신 수락 된 답변이 여기에 표시되면 즉시 모든 답글이 포함 된 답글을 삭제해야 함을 이해해야합니다. 그리고 나는 받아 들여진 대답이 당신 것이기를 바랍니다, 그래서 당신은 당신의 명성 승급을 정직하게 얻을 것입니다. – Paul