Class: Twing

Inherits:
Object
  • Object
show all
Includes:
Modules, OperatingMode
Defined in:
lib/twing.rb,
lib/twing/cli.rb,
lib/twing/queue.rb,
lib/twing/cursor.rb,
lib/twing/modules.rb,
lib/twing/version.rb,
lib/twing/receivers.rb,
lib/twing/initializer.rb,
lib/twing/modules/base.rb,
lib/twing/operating_mode.rb,
lib/twing/utility/logger.rb

Defined Under Namespace

Modules: Modules, OperatingMode Classes: Cli, Cursor, Initializer, Queue, Receivers

Constant Summary collapse

LOGGER_FORMAT =
'%Y-%m-%d %H:%M:%S.%L '
REDIS_KEY =
'home_timeline_streamer'
VERSION =
"0.1.3"

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Modules

#after_init, included, #init_modules

Constructor Details

#initializeTwing

Returns a new instance of Twing.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/twing.rb', line 23

def initialize
  @receivers = Receivers.new
  @cli = Cli.new(self)
  @setting = @cli.parse
  @logger = generate_logger
  @receivers.init(self)

  @logger.debug("load plugins: #{@receivers.receivers}")

  @rest_client = Twitter::REST::Client.new(setting.twitter.api_key)
  @stream_client = Twitter::Streaming::Client.new(setting.twitter.api_key)

  unless setting.standalone
    Redis.current = Redis::Namespace.new(
      setting.redis.namespace,
      :redis => Redis.new(setting.redis.config)
    )
    @redis = Redis.current
    @queue = Queue.new('queue', setting.redis.namespace)
  end

  @cursor = Cursor.new(REDIS_KEY, !setting.standalone)

  after_init
end

Instance Attribute Details

#cliObject (readonly)

Returns the value of attribute cli.



21
22
23
# File 'lib/twing.rb', line 21

def cli
  @cli
end

#loggerObject

Returns the value of attribute logger.



20
21
22
# File 'lib/twing.rb', line 20

def logger
  @logger
end

#receiversObject (readonly)

Returns the value of attribute receivers.



21
22
23
# File 'lib/twing.rb', line 21

def receivers
  @receivers
end

#rest_clientObject (readonly)

Returns the value of attribute rest_client.



21
22
23
# File 'lib/twing.rb', line 21

def rest_client
  @rest_client
end

#settingObject (readonly)

Returns the value of attribute setting.



21
22
23
# File 'lib/twing.rb', line 21

def setting
  @setting
end

#stream_clientObject (readonly)

Returns the value of attribute stream_client.



21
22
23
# File 'lib/twing.rb', line 21

def stream_client
  @stream_client
end

Instance Method Details

#pouring(tweet_id) ⇒ Object



63
64
65
66
# File 'lib/twing.rb', line 63

def pouring(tweet_id)
  obj = rest_client.status(tweet_id)
  delivery(obj)
end

#startObject



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/twing.rb', line 49

def start
  raise ArgumentError, 'mode is empty' if mode.nil?
  logger.info("start mode=#{mode} standalone=#{setting.standalone}")
  send(mode)
rescue Interrupt, SignalException
  # do nothing
rescue Exception => ex
  backtrace = ex.backtrace.dup
  logger.error("    \#{backtrace.shift}: \#{ex.message} (\#{ex.class})\n    \#{backtrace.join(\"\\n\")}\n  EOF\nend\n")