-
Notifications
You must be signed in to change notification settings - Fork 324
Open
Description
When I use Faraday::HttpCache in my middleware, cached responses return this error:
/Users/ditsara/.rvm/gems/ruby-2.3.0@gq-commerce/gems/her-0.8.1/lib/her/model/attributes.rb:35
The problem is Faraday::HttpCache returns parsed_data with string keys instead of symbols, so klass.extract_array in her/model/parse.rb:171 returns nil because it's looking for :data (but not 'data').
I was able to work around the problem by adding:
def self.extract_array(request_data)
super(request_data.with_indifferent_access)
end
to my class (ActiveSupport::HashWithIndifferentAccess). Should extract_array be modified to accept a string key? I can submit a PR if necessary.
relevant code snippets
My middleware:
c.use Faraday::HttpCache,
store: Rails.cache,
shared_cache: false,
logger: Rails.logger
# Request
c.use FaradayMiddleware::EncodeJson
# Response
c.use Her::Middleware::DefaultParseJSON
# Adapter
c.use Faraday::Adapter::NetHttp
her/model/attributes.rb:34
def self.initialize_collection(klass, parsed_data={})
collection_data = klass.extract_array(parsed_data).map do |item_data|
...
her/model/parse.rb:171
def extract_array(request_data)
if request_data[:data].is_a?(Hash) && (active_model_serializers_format? || json_api_format?)
request_data[:data][pluralized_parsed_root_element]
else
request_data[:data]
end
end
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels