追記:
v2.0.1でfaraday-net_http
が再度追加され、デフォルトのアダプターとして使用されるようになったため、この記事で説明していたエラーは発生しなくなりました。 (@ryy さんありがとうございます)
初めに
Faraday 2がアルファリリースされており、動作を検証してみたところ以下のようなエラーが発生しました。
no stubbed request for get http://localhost:4567/ (Faraday::Adapter::Test::Stubs::NotFound)
Faradayのバージョン: v2.0.0.alpha-3
結論
UPGRADING.md (v2.0.0.alpha-3) を見る
具体的には、
- アダプターがFaradayのcoreから外れたので、別途gemのインストールが必要
- デフォルトアダプターが
:test
になっているので、自身で設定する必要がある
require 'faraday'
+ require 'faraday/net_http'
+ Faraday.default_adapter = :net_http
conn = Faraday.new(url: 'http://localhost:4567') do |f|
f.response(:logger)
end
gem 'faraday', '2.0.0.alpha-3'
+ gem 'faraday-net_http', '2.0.0.alpha-2'
解説
Faraday v1で以下のようなコードを書いていました。このままFaradayのバージョンを2.0.0.alpha-3
に上げてみます。
require 'faraday'
conn = Faraday.new(url: 'http://localhost:4567') do |f|
f.response(:logger)
end
response = conn.get('/')
すると、上で記載したようにこのようなエラーが出ました。
no stubbed request for get http://localhost:4567/ (Faraday::Adapter::Test::Stubs::NotFound)
default_adapterの設定
これは以下のような変更が入ったためです。
- # for the default {Faraday::Connection}. Defaults to `:net_http`.
+ # for the default {Faraday::Connection}. Defaults to `:test`.
# @return [Symbol] the default adapter
# @overload default_adapter=(adapter)
# Updates default adapter while resetting {.default_connection}.
@@ -150,5 +150,5 @@ def method_missing(name, *args, &block)
self.ignore_env_proxy = false
self.root_path = File.expand_path __dir__
self.lib_path = File.expand_path 'faraday', __dir__
- self.default_adapter = :net_http
+ self.default_adapter = :test
end
今までは:net_http
がdefault_adapterでしたが、:test
に変わっています。これにより、今までは:net_http
を特に設定せずに使っていたのですが、別途default_adapter
の設定が必要になります。
require 'faraday'
+ Faraday.default_adapter = :net_http
conn = Faraday.new(url: 'http://localhost:4567') do |f|
f.response(:logger)
end
しかしまた以下のようなエラーが出ます。
`lookup_middleware': :net_http is not registered on Faraday::Adapter (Faraday::Error)
アダプターのインストール
UPGRADING.mdにあるようにfaraday-net_http
をGemfileに追加する必要があります。これは、メンテナンスをしやすくするために、Faradayのコアからアダプターが除外されたためです。
そのため、Gemfileへの追加をし、インストールします。
gem 'faraday', '2.0.0.alpha-3'
+ gem 'faraday-net_http', '2.0.0.alpha-2'
そしてfaraday/net_http
をrequireすると動くようになります。
require 'faraday'
+ require 'faraday/net_http'
Faraday.default_adapter = :net_http
conn = Faraday.new(url: 'http://localhost:4567') do |f|
f.response(:logger)
end