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

Другие вопросы по тегам