Sha256: b2b39fdf6ba6ac37233dfd8f2ea3f8f9e04a0056d68d894965b3e42ba7656923

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

require "ruzai/version"
require "active_support"
require "active_support/core_ext"
require "active_record"

module Ruzai
  attr_accessor :suspention_expired_at, :suspended_count
  include ActiveSupport::Configurable
  config_accessor :suspention_duration, :respawn_limit

  self.configure do |config|
    config.suspention_duration = 2.weeks
    config.respawn_limit = 5
  end

  def suspended?
    return true if (self.suspended_count || 0) > Ruzai.respawn_limit
    return false unless suspention_expired_at
    self.suspention_expired_at > Time.now
  end

  def suspended_until
    return nil unless suspention_expired_at
    remains = (self.suspention_expired_at - Time.now).to_i

    # If time remains between 1 second ~ 23 hours 59 seconds, it displays '1 day'
    (( remains / 1.day ) + 1 ).day
  end

  def suspend!
    self.suspended_count ||=0
    self.suspended_count += 1
    self.suspention_expired_at = Ruzai.suspention_duration.from_now
    self.save!
  end

  def ban!
    self.suspended_count = Ruzai.respawn_limit + 1
    self.save!
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruzai-0.0.1 lib/ruzai.rb