Sha256: 494663d3e04a7c8abeb7bf97fdccc52987e2ada9ecd92e813558dd05e4fb7ef8
Contents?: true
Size: 1.54 KB
Versions: 16
Compression:
Stored size: 1.54 KB
Contents
class Iro::Alert include Mongoid::Document include Mongoid::Timestamps include Mongoid::Paranoia store_in collection: 'iro_alerts' # SLEEP_TIME_SECONDS = Rails.env.production? ? 60 : 15 DIRECTION_ABOVE = 'ABOVE' DIRECTION_BELOW = 'BELOW' def self.directions_list [ nil, DIRECTION_ABOVE, DIRECTION_BELOW ] end STATUS_ACTIVE = 'active' STATUS_INACTIVE = 'inactive' STATUSES = [ nil, 'active', 'inactive' ] field :status, default: STATUS_ACTIVE def self.active where( status: STATUS_ACTIVE ) end field :class_name, default: 'Iro::Stock' validates :class_name, presence: true field :symbol, type: String validates :symbol, presence: true field :direction, type: String validates :direction, presence: true field :strike, type: Float validates :strike, presence: true def do_run alert = self begin price = Tda::Stock.get_quote( alert.symbol )&.last return if !price if ( alert.direction == alert.class::DIRECTION_ABOVE && price >= alert.strike ) || ( alert.direction == alert.class::DIRECTION_BELOW && price <= alert.strike ) if Rails.env.production? Iro::AlertMailer.stock_alert( alert.id.to_s ).deliver_later else Iro::AlertMailer.stock_alert( alert.id.to_s ).deliver_now end alert.update({ status: alert.class::STATUS_INACTIVE }) print '^' end rescue => err puts! err, 'err' ::ExceptionNotifier.notify_exception( err, data: { alert: alert } ) end end end
Version data entries
16 entries across 16 versions & 2 rubygems