Ruby 2.1.5 및 2.2.4에서 새 수집기를 만들면 정확한 결과가 반환됩니다.Ruby 2.3.1에서 OpenStruct 문제
require 'ostruct'
module ResourceResponses
class Collector < OpenStruct
def initialize
super
@table = Hash.new {|h,k| h[k] = Response.new }
end
end
class Response
attr_reader :publish_formats, :publish_block, :blocks, :block_order
def initialize
@publish_formats = []
@blocks = {}
@block_order = []
end
end
end
> Collector.new
=> #<ResourceResponses::Collector>
Collector.new.responses
=> #<ResourceResponses::Response:0x007fb3f409ae98 @block_order=[], @blocks= {}, @publish_formats=[]>
Ruby 2.3.1로 업그레이드하면 대신 nil이 반환됩니다. OpenStruct가 10 배 빠른 2.3 지금 얼마나
> Collector.new
=> #<ResourceResponses::Collector>
> Collector.new.responses
=> nil
나는 주위를 읽는 많은 일을했지만 내가 수집 및 응답 사이의 관계를 깰 것이라고 하였다 어떤 변화를 확인할 수 없습니다. 어떤 도움이라도 대단히 감사합니다. Rails 버전은 4.2.7.1입니다.
대단히 감사합니다. 나는이 대답의 깊이를 정말로 고맙게 생각한다. – Brit200313