Question

Here is my method:

def get_video_duration
  @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"]
  format_duration
end

I need to write this method "better" in wrapping it with a begin, rescue block so that @time could be nil depending on the response from the API.

Était-ce utile?

La solution

Yes, possible using inline rescue clause.

def get_video_duration
    @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"] rescue nil
    format_duration
end

Or better explicitly do it.

def get_video_duration
  @time ||= Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"]
rescue YourException
  @time = nil
  format_duration
end

Autres conseils

Maybe break it down with an additional method :

def fetch_video_duration

  Panda.get("/videos/#{@video.panda_id}/metadata.json")["duration"]

  rescue
    return nil
end

def get_video_duration
  @time ||= fetch_video_duration

  format_duration
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top