2016-03-29 9 views
1

Ich verwende eine Rake-Aufgabe, um Daten von einem CSV, rufen Sie die shopify API mit diesen Daten, und speichern Sie die Antwort auf eine andere CSV. Das Problem ist, dass ich keinen Fehlerhandler an Ort und Stelle habe, so dass, wenn die shopify API die von mir bereitgestellte Ressource nicht finden kann, die gesamte Aufgabe abgebrochen wird. Was ist der beste Weg, um den Fehler zu behandeln, so dass, wenn die Ressource in Shopify nicht gefunden wird, einfach übersprungen werden und mit der nächsten Zeile fortfahren?Rake Aufgabe Handle 404

Die Linie, die die Shopify API im Code aufrufen unten:
variant = ShopifyAPI::Variant.find(vid)

namespace :replace do 
    desc "replace variant id with variant sku" 

    task :sku => :environment do 
     file="db/master-list-3-28.csv" 
     newFile = Rails.root.join('lib/assets', 'newFile.csv') 
     CSV.open(newFile, "a+") do |csv| 
      CSV.foreach(file) do |row| 

       msku, namespace, key, valueType, value = row 
       valueArray = value.split('|') 
       newValueString = "" 

       valueArray.each_with_index do |v, index| 

        recArray = v.split('*') 
        handle = recArray[0] 
        vid = recArray[1] 
        newValueString << handle 
        newValueString << "*" 
        # use api call to retrieve variant sku using handle and vid 
        #replace vid with sku and save to csv 

        variant = ShopifyAPI::Variant.find(vid) 
        sleep 1 
        # puts variant.sku 
        newValueString << variant.sku 
        if index < 2 
         newValueString << "|" 
        end 
       end 

       #end of value save the newvaluestring to new csv 
       csv << [newValueString] 

      end 
     end 
    end 
end 

Antwort

1

Hier ist ein einfacher Weg, um es getan:

begin 
    variant = ShopifyAPI::Variant.find(vid) 
rescue 
    next 
end 

Wenn eine Ausnahme das Material angehoben wird in Rettung passiert.

Verwandte Themen