Автоматическая перезагрузка классов в папке 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/