module Cassie::Statements::Statement::Limiting
Public Class Methods
included(base)
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 15 def self.included(base) base.instance_eval do attr_writer :limit end base.extend ClassMethods end
Public Instance Methods
limit()
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 42 def limit return @limit if defined?(@limit) self.class.limit end
with_limit(temp_limit) { || ... }
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 47 def with_limit(temp_limit) raise ArgumentError, "block required for passing temporary limit" unless block_given? define_limit_singleton(temp_limit) yield ensure remove_limit_singleton end
Protected Instance Methods
build_limit_str()
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 58 def build_limit_str return "" if limit.nil? "LIMIT #{limit}" end
Private Instance Methods
assert_no_limit_singleton()
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 90 def assert_no_limit_singleton if singleton_methods.include?(:limit) raise NameError.new("A singleton method has already been defined for `limit`. `with_limit` can't be implemented.", :limit) unless jruby_issue_4228? end end
define_limit_singleton(temp_limit)
click to toggle source
Calls superclass method
# File lib/cassie/statements/statement/limiting.rb, line 72 def define_limit_singleton(temp_limit) assert_no_limit_singleton define_singleton_method(:limit) do return super() if jruby_issue_4228? temp_limit end end
initialize_copy(other)
click to toggle source
Calls superclass method
# File lib/cassie/statements/statement/limiting.rb, line 66 def initialize_copy(other) super @jruby_issue_4228 = false remove_limit_singleton end
jruby_issue_4228?()
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 96 def jruby_issue_4228? defined?(@jruby_issue_4228) && @jruby_issue_4228 end
remove_limit_singleton()
click to toggle source
# File lib/cassie/statements/statement/limiting.rb, line 80 def remove_limit_singleton if singleton_methods.include?(:limit) class << self remove_method :limit end end rescue NameError @jruby_issue_4228 = true end