aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhenium <rhenium@rhe.jp>2014-01-31 06:37:29 +0900
committerRhenium <rhenium@rhe.jp>2014-01-31 06:37:29 +0900
commit91161859855d4edb52b8e64a9381688127c537e0 (patch)
tree279bd0c0ea1e14c03efe023c324aba02a31b71f5
parent3f918500e669863515f88e904789d1d3c5cd1ed8 (diff)
downloadaclog-91161859855d4edb52b8e64a9381688127c537e0.tar.gz
improve (Tweet|Favorite|Retweet).from_json
-rw-r--r--app/models/favorite.rb8
-rw-r--r--app/models/retweet.rb8
-rw-r--r--app/models/tweet.rb24
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)