diff options
author | Rhenium <rhenium@rhe.jp> | 2014-01-31 06:37:29 +0900 |
---|---|---|
committer | Rhenium <rhenium@rhe.jp> | 2014-01-31 06:37:29 +0900 |
commit | 91161859855d4edb52b8e64a9381688127c537e0 (patch) | |
tree | 279bd0c0ea1e14c03efe023c324aba02a31b71f5 | |
parent | 3f918500e669863515f88e904789d1d3c5cd1ed8 (diff) | |
download | aclog-91161859855d4edb52b8e64a9381688127c537e0.tar.gz |
improve (Tweet|Favorite|Retweet).from_json
-rw-r--r-- | app/models/favorite.rb | 8 | ||||
-rw-r--r-- | app/models/retweet.rb | 8 | ||||
-rw-r--r-- | app/models/tweet.rb | 24 |
3 files changed, 24 insertions, 16 deletions
diff --git a/app/models/favorite.rb b/app/models/favorite.rb index 892efff..bc66127 100644 --- a/app/models/favorite.rb +++ b/app/models/favorite.rb @@ -16,9 +16,11 @@ class Favorite < ActiveRecord::Base favorite = Favorite.new(tweet: tweet, user: user) favorite.save! logger.debug("Successfully created a favorite: #{favorite.id}") - rescue - logger.debug("Failed to create a favorite: #{favorite}") + rescue ActiveRecord::RecordNotUnique => e + logger.debug("Failed to create a favorite: #{favorite}: #{e.class}") + rescue => e + logger.error("Failed to create a favorite: #{favorite}: #{e.class}: #{e.message}/#{e.backtrace.join("\n")}") ensure - favorite + return favorite end end diff --git a/app/models/retweet.rb b/app/models/retweet.rb index 7b83dba..07a641a 100644 --- a/app/models/retweet.rb +++ b/app/models/retweet.rb @@ -16,9 +16,11 @@ class Retweet < ActiveRecord::Base retweet = Retweet.new(id: json[:id], tweet: tweet, user: user) retweet.save! logger.debug("Successfully created a retweet: #{retweet.id}") - rescue - logger.debug("Failed to create a retweet: #{retweet}") + rescue ActiveRecord::RecordNotUnique => e + logger.debug("Failed to create a retweet: #{retweet}: #{e.class}") + rescue => e + logger.error("Failed to create a retweet: #{retweet}: #{e.class}: #{e.message}/#{e.backtrace.join("\n")}") ensure - retweet + return retweet end end diff --git a/app/models/tweet.rb b/app/models/tweet.rb index 61736f0..0dfe47a 100644 --- a/app/models/tweet.rb +++ b/app/models/tweet.rb @@ -45,17 +45,21 @@ class Tweet < ActiveRecord::Base def self.from_json(json) find_by(id: json[:id]) || begin user = User.from_json(json[:user]) - create!(id: json[:id], - text: extract_entities(json), - source: json[:source], - tweeted_at: json[:created_at], - in_reply_to_id: json[:in_reply_to_status_id], - user: user) + tweet = Tweet.new(id: json[:id], + text: extract_entities(json), + source: json[:source], + tweeted_at: json[:created_at], + in_reply_to_id: json[:in_reply_to_status_id], + user: user) + tweet.save! + logger.debug("Successfully created a tweet: #{tweet.id}") + rescue ActiveRecord::RecordNotUnique => e + logger.debug("Failed to create a tweet: #{tweet}: #{e.class}") + rescue => e + logger.error("Failed to create a tweet: #{tweet}: #{e.class}: #{e.message}/#{e.backtrace.join("\n")}") + ensure + return tweet end - rescue ActiveRecord::RecordNotUnique - logger.debug("Duplicate Tweet: #{json[:id]}") - rescue => e - logger.error("Unknown error while inserting tweet: #{e.class}: #{e.message}/#{e.backtrace.join("\n")}") end def self.from_twitter_object(obj) |