Sha256: 5d09f73922118889403da8c682ec2c3dfad4f92cd7cca6870be9542f8e288bfe
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
# Includes functionality to send to twitter on after_create callback module Kublog module Notification module Tweet def self.included(base) base.send :include, InstanceMethods base.send :extend, ClassMethods base.send :include, case Kublog.notification_processing.try(:to_sym) when :delayed_job then DelayedJob else Immediate end base.send :after_create, :notify_tweet base.send :validates_presence_of, :tweet_text, :if => :twitter_notify end module InstanceMethods protected def notify_tweet if self.twitter_notify tweet_deliver([self.tweet_text, self.url].join(' ')) end end end end module ClassMethods # TODO Find out more about Twitter::NotFound() # Configure whether or not to send errors def safe_twitter_update(update, post) begin return Kublog.twitter_client.update(update) rescue Twitter::NotFound latest_tweet = Kublog.twitter_client.user_timeline.first if latest_tweet.text.gsub(/ http:\/\/[^ ]\Z/, '') == post.tweet_text return latest_tweet else return {:id => nil, :text => post.tweet_text} end end end end # Queues Process on DJ module DelayedJob def tweet_deliver(tweet) Delayed::Job.enqueue(TweetJob.new(tweet, self)) end end # Delivers Immediately module Immediate def tweet_deliver(tweet) response = safe_twitter_update(tweet, self) self.update_attributes :tweet_id => response.id, :tweet_text => response.text end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kublog-0.0.1.1 | lib/kublog/notification/tweet.rb |