ShopifyAPI::InventoryLevel.delete は削除しますが、NoMethodError もスローします
概要
私は ShopifyAPI Ruby gem を使用しています。 gem の一部として、特定の場所にある製品の InventoryLevel を削除できます。
これはうまくいきます:
ShopifyAPI::InventoryLevel.delete(
inventory_item_id: "correct_id",
location_id: "and_another_correct_id"
)
問題は、レベルが削除された後、API が次のエラーをスローすることです。
NoMethodError (undefined method `empty?' for nil:NilClass)
これは毎回起こるのですが、理由がわかりません。
これは他の人にも起こっていますか?何かご意見は?
解決策
まず、エラー メッセージは、何かが nil.empty? を呼び出していることを示します。そのメソッドをトリガーしたときなので、それがどこで起こっているかを見つけるだけの問題です。
使用している gem のバージョンは何ですか? ShopifyAPI::InventoryLevel#delete は API リクエストを送信するだけなので、そのようなエラーは、そのリクエストに対する応答を処理する gem のロジックのどこかに存在します。リポジトリをざっと確認すると、呼び出しているリクエスト メソッドはおそらく ShopifyAPI::Clients::HttpClient#request です。 #delete メソッドは API に DELETE リクエストを送信しており、204 No Content レスポンスが返されるはずです。 HTTP クライアント ファイルには、.empty? を呼び出していることが示されています。 nil 応答本文の処理がありますが、ファイルのバージョン履歴を見ると、これが v13.4.0 というタグが付いた 1 年未満前のコミットに追加されたことがわかります。おそらく、そのバグ修正よりも古いバージョンの gem を使用しているため、それを更新するだけで済みます。