単純な API 呼び出しでの Rails/Ruby dry-monads エラー
概要
私は Shftcos API ボイラープレートをテストしています。これには、これまでに出会ったことのない dry-monads gem を含む大量の追加機能があります。
FakeStoreApi 製品をフェッチするサービス呼び出しで、トラバースのようなエラーがスローされます。
require 'faraday'
require 'json'
class FetchProductsService < ApplicationService
def call
result = yield fetch_products
Success(result)
end
private
def fetch_products
products = []
response = Faraday.get('https://fakestoreapi.com/products')
if response.status == 200
products = JSON.parse(response.body)
end
products
end
end
型なしリスト?これは製品データの配列を返す必要があるため、その理由を知っている人はいますか? これにはいくつかのリストスタイルを使用する必要がありますか?
解決策
私はあなたと同じ問題に遭遇しました。問題は、関数でモナドを返さなかったためです。
関数の最後に Success を追加するとよいでしょう
def fetch_products
products = []
response = Faraday.get('https://fakestoreapi.com/products')
if response.status == 200
products = JSON.parse(response.body)
end
Success(products) # <-- Wrap it here!
end