Sha256: 50d47d48c9679887ab9ecc0fdb082542e32a9945335db3f3d86573be24c7f01c

Contents?: true

Size: 568 Bytes

Versions: 3

Compression:

Stored size: 568 Bytes

Contents

module Wolverine
  class Script
    attr_reader :content, :digest
    def initialize file
      @content = load_lua file
      @digest = Digest::SHA1.hexdigest @content
    end

    def call redis, *args
      run_evalsha redis, *args
    rescue => e
      e.message =~ /NOSCRIPT/ ? run_eval(redis, *args) : raise
    end

    private

    def run_evalsha redis, *args
      redis.evalsha digest, args.size, *args
    end

    def run_eval redis, *args
      redis.eval content, args.size, *args
    end

    def load_lua file
      File.read file
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wolverine-0.0.4 lib/wolverine/script.rb
wolverine-0.0.3 lib/wolverine/script.rb
wolverine-0.0.2 lib/wolverine/script.rb