зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-09-02 01:16:18 +03:00
48 строки
1.2 KiB
Ruby
48 строки
1.2 KiB
Ruby
module Telegram
|
|
module Bot
|
|
class UpdatesController
|
|
module Testing
|
|
IVARS_TO_KEEP = %i(@_session).freeze
|
|
|
|
# Perform multiple dispatches on same instance.
|
|
def dispatch_again(bot = nil, update = nil)
|
|
recycle!
|
|
initialize(bot, update)
|
|
dispatch
|
|
end
|
|
|
|
# Cleans controller between dispatches.
|
|
# Seems like there is nothing to clean between requests for now:
|
|
# everything will be rewriten with #initialize.
|
|
#
|
|
# With `full` set to `true` it'll clear all cached instance variables.
|
|
def recycle!(full = false)
|
|
return unless full
|
|
(instance_variables - IVARS_TO_KEEP).each do |ivar|
|
|
remove_instance_variable(ivar)
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
# Stubs session.
|
|
def session
|
|
@_session ||= Testing::SessionHash.new
|
|
end
|
|
|
|
class SessionHash < Session::SessionHash
|
|
def initialize
|
|
@data = {}
|
|
@loaded = true
|
|
@exists = true
|
|
end
|
|
|
|
alias_method :destroy, :clear
|
|
alias_method :load!, :id
|
|
alias_method :commit, :id
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|