이 문제는 Rails 3.0.7 및 3.0.9, WEBrick 및 Apache에서 발생합니다.read_inheritable_attribute가 예기치 않게 수정되었습니다.
module Reportable
module ClassMethods
def add_report(report_name)
instance_eval do
write_inheritable_hash(:reportable_report_names,
{report_name => {:dates => true, :details => 'something'})
end
end
end
end
def self.included(base)
base.extend(ClassMethods)
end
end
Reportable
config/initializers
에로드되고, 클래스가 사용 : 생산 모드
class User < ActiveRecord::Base
include Reportable
add_report :report1
add_report :report2
end
를 처음
는 I는 inheritable_attribute
쓰기 방법을 갖는 모듈 Reportable
을 서버가 시작된 후 페이지를로드하면 속성이 올바르게로드됩니다.
User.read_inheritable_attribute(:reportable_report_names)
# => {:report1 => {:dates => true, :details => 'something'},
:report2 => {:dates => true, :details => 'something'}}
그러나 두 번째 페이지로드에:
개발 예상, 생산 모드에서 콘솔대로 작동User.read_inheritable_attribute(:reportable_report_names)
# => {:report1 => {:dates => true},
:report2 => {:dates => true}}
. 문제는 프로덕션 모드의 웹 서버에있는 POST 요청에만 나타납니다. 뭐라 구요?
가능한 해결 방법은 클래스를 언로드 가능하게 만드는 것입니다. 여기 당신이 설명을 찾을 수 있습니다 : http : // stackoverflow.com/questions/6853471/ruby-on-rails-unloadable – socjopata