Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
rrq / lib / rrq / scripts / base.rb
Size: Mime:
module Rrq
  module Scripts
    class Base
      def initialize(conn)
        @conn = conn
      end

      def lua_filename
        raise NotImplementedError.new
      end

      def load
        text = Pathname.new(__FILE__).dirname.join("lua/#{lua_filename}").read
        @conn.redis { |r| r.script(:load, text) }
      end

      def reload
        @sha = load
      end

      def perform(*args)
        @sha ||= load
        request(*args)
      rescue Redis::CommandError => e
        if e.message.include?("NOSCRIPT")
          reload
          retry
        end
      end
    end
  end
end