首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Faraday::Error::hashie未在Faraday::中间件上注册

Faraday::Error::hashie未在Faraday::中间件上注册
EN

Stack Overflow用户
提问于 2016-12-21 11:18:31
回答 1查看 740关注 0票数 1

我正在为一个RESTful API创建一个包装器gem。当我试图按照hashie添加文档中间件时,会出现以下错误

代码语言:javascript
复制
Magpress::Login::#call#test_0001_should return valid JWT token:
Faraday::Error: :hashie is not registered on Faraday::Middleware
    /home/amit/.rvm/gems/ruby-2.2.2@magpress/gems/faraday-0.10.0/lib/faraday.rb:184:in `lookup_middleware'
    /home/amit/.rvm/gems/ruby-2.2.2@magpress/gems/faraday-0.10.0/lib/faraday/rack_builder.rb:204:in `use_symbol'
    /home/amit/.rvm/gems/ruby-2.2.2@magpress/gems/faraday-0.10.0/lib/faraday/rack_builder.rb:84:in `use'
    /home/amit/projects/bt/magpress/lib/magpress/client.rb:24:in `block in connection'
    /home/amit/.rvm/gems/ruby-2.2.2@magpress/gems/faraday-0.10.0/lib/faraday/connection.rb:91:in `initialize'
    /home/amit/.rvm/gems/ruby-2.2.2@magpress/gems/faraday-0.10.0/lib/faraday.rb:70:in `new'
    /home/amit/.rvm/gems/ruby-2.2.2@magpress/gems/faraday-0.10.0/lib/faraday.rb:70:in `new'
    /home/amit/projects/bt/magpress/lib/magpress/client.rb:18:in `connection'
    /home/amit/projects/bt/magpress/lib/magpress/base.rb:7:in `initialize'
    /home/amit/projects/bt/magpress/test/login_spec.rb:13:in `new'
    /home/amit/projects/bt/magpress/test/login_spec.rb:13:in `block (3 levels) in <top (required)>'

下面是我如何在.gemspec中删除依赖关系。

代码语言:javascript
复制
...
  spec.add_dependency "faraday"
  spec.add_dependency "faraday_middleware"
  spec.add_dependency "hashie"
....

以及使用faraday的类及其中间件

代码语言:javascript
复制
require 'faraday'
require 'faraday_middleware'
require 'hashie'
module Magpress
  class Client
    def connection(url)
      conn = ::Faraday.new(url) do |faraday|
        faraday.request :json

        faraday.response :json, :content_type => /\bjson$/

        # faraday.use :instrumentation
        faraday.use :hashie # FaradayMiddleware::Mashify
        faraday.adapter Faraday.default_adapter
      end   
      conn
    end
  end
end

farady和中间件宝石版本

代码语言:javascript
复制
amit@amit:~/projects/bt/magpress$ gem list | grep faraday
faraday (0.10.0)
faraday_middleware (0.10.1)

这里有什么问题吗?

如果我用:hashie替换FaradayMiddleware::Mashify,错误就会消失,但是response.body返回vanilla Hash而不是Hashie::Mash的实例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-22 09:30:16

瞧!它是固定的。

电流

代码语言:javascript
复制
faraday.response :json, :content_type !=> /\bjson$/
faraday.use :hashie # FaradayMiddleware::Mashify

修正后的

代码语言:javascript
复制
faraday.response :mashify
faraday.response :json, :content_type => /\bjson$/

我可以通过阅读代码来解决问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41261565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档