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 /app/models/tweet.rb | |
parent | 3f918500e669863515f88e904789d1d3c5cd1ed8 (diff) | |
download | aclog-91161859855d4edb52b8e64a9381688127c537e0.tar.gz |
improve (Tweet|Favorite|Retweet).from_json
Diffstat (limited to 'app/models/tweet.rb')
-rw-r--r-- | app/models/tweet.rb | 24 |
1 files changed, 14 insertions, 10 deletions
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) |