简单API调用时出现Rails/Ruby dry-monads错误

pinkon5k  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(86)

我正在测试Shftcos API样板,它有大量的附加功能,包括我以前没有遇到过的干单子gem。
在一个获取FakeStoreApi产品的服务调用中,我得到了这个看起来像遍历的错误:
无法在服务调用中使用以下代码遍历非类型化列表(StandardError)。

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

字符串
未键入的列表?有人知道为什么这应该返回一个产品数据数组吗?我们必须在这上面使用一些列表样式吗?

sbtkgmzw

sbtkgmzw1#

我遇到了和你一样的问题,问题是因为我没有在函数中返回Monad,
您可能希望在函数的末尾添加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

字符串

相关问题