Как я использую объекты области от промежуточного программного обеспечения с cache_classes прочь?

В среде разработки направляющих, cache_classes прочь, таким образом, можно изменить код под app/ и посмотрите изменения, не перезапуская сервер.

Во всех средах, тем не менее, промежуточное программное обеспечение только создается однажды. Таким образом, если у меня есть промежуточное программное обеспечение как это:

class MyMiddleware

  def initialize(app)
    @app = app
  end

  def call(env)
    env['model'] = MyModel.first
  end

end

и я выполняю в этом config/environments/development.rb:

config.cache_classes = false # the default for development
config.middleware.use MyMiddleware

затем я буду всегда получать следующую ошибку:

A copy of MyMiddleware has been removed from the module tree but is still active!
  /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:414:in `load_missing_constant'
  /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:96:in `const_missing'
  /Users/me/projects/my_project/lib/my_middleware.rb:8:in `call'
  /Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/middleware_stack.rb:72:in `new'
  ...

Проблема состоит в том что MyMiddleware экземпляр создается однажды во время системной нагрузки, но MyModel класс перезагружается на каждом вызове.

Я попробовал 'MyModel'.constantize.first для задержки привязки к классу до времени вызова метода но это изменяет проблему на новую:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.include?
  /Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/active_record/attribute_methods.rb:142in `create_time_zone_conversion_attribute?'
  /Library/Ruby/Gems/1.8/gems/activerecord-2.3.2/active_record/attribute_methods.rb:75:in `define_attributes_methods'
  ...
6
задан John Topley 13 June 2009 в 18:30
поделиться

2 ответа

Это кажется ошибкой рельсов. Посмотрите, сможете ли вы обновить вашу версию Rails до 2.3.4 или 2.3.5.

Я считаю Это - это фиксация, которая исправила проблему. Отчет о оригинальной ошибки здесь .

2
ответ дан 17 December 2019 в 22:14
поделиться

Мы столкнулись с проблемой, похожей на ваше время назад. Насколько я помню, это может быть исправлено, установив Time_zone в Engineonge.rb to: UTC. Это было некоторое время назад, и я не помню именно имя параметра Config или будь то, был «UTC» или: UTC. Дайте это попробовать, может быть, это поможет.

-1
ответ дан 17 December 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: