Class: YiffSpace::Utils::UserResolvable
- Inherits:
-
Object
- Object
- YiffSpace::Utils::UserResolvable
- Defined in:
- lib/yiffspace/utils/user_resolvable.rb
Instance Attribute Summary collapse
-
#ip_addr ⇒ Object
readonly
Returns the value of attribute ip_addr.
-
#user ⇒ Object
(also: #resolve)
readonly
Returns the value of attribute user.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #===(other) ⇒ Object
-
#initialize(user, ip_addr, validate: true) ⇒ UserResolvable
constructor
A new instance of UserResolvable.
- #is_a?(other) ⇒ Boolean
- #resolvable(ip_addr = nil) ⇒ Object
Constructor Details
#initialize(user, ip_addr, validate: true) ⇒ UserResolvable
Returns a new instance of UserResolvable.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 8 def initialize(user, ip_addr, validate: true) if user.is_a?(UserResolvable) TraceLogger.warn("UserResolvable", "Unexpectedly received UserResolvable for user argument") user = recursive_resolve(user) end @user = user ip_addr = ip_addr.to_s if ip_addr.is_a?(IPAddr) @ip_addr = ip_addr return unless validate raise(ArgumentError, "Expected User for user argument, got #{user.inspect} (#{user.class.name})") unless user.is_a?(YiffSpace.config.user_class) raise(ArgumentError, "Expected String for ip_addr argument, got #{ip_addr.inspect} (#{ip_addr.class.name})") unless ip_addr.is_a?(String) end |
Instance Attribute Details
#ip_addr ⇒ Object (readonly)
Returns the value of attribute ip_addr.
6 7 8 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 6 def ip_addr @ip_addr end |
#user ⇒ Object (readonly) Also known as: resolve
Returns the value of attribute user.
6 7 8 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 6 def user @user end |
Class Method Details
.recursive_resolve(resolvable) ⇒ Object
37 38 39 40 41 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 37 def self.recursive_resolve(resolvable) result = resolvable result = result.resolve while result.is_a?(UserResolvable) result end |
Instance Method Details
#==(other) ⇒ Object
43 44 45 46 47 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 43 def ==(other) return other == user if other.is_a?(YiffSpace.config.user_class) other.is_a?(UserResolvable) && user == other.user end |
#===(other) ⇒ Object
49 50 51 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 49 def ===(other) (other == YiffSpace.config.user_like_class && user.is_a?(YiffSpace.config.user_class)) || super end |
#is_a?(other) ⇒ Boolean
53 54 55 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 53 def is_a?(other) (other == YiffSpace.config.user_like_class && user.is_a?(YiffSpace.config.user_class)) || super end |
#resolvable(ip_addr = nil) ⇒ Object
23 24 25 26 |
# File 'lib/yiffspace/utils/user_resolvable.rb', line 23 def resolvable(ip_addr = nil) @ip_addr = ip_addr if ip_addr.present? self end |