Techioz Blog

単純な 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