Sha256: 7598fe1235ae9016db9e3ba0df00e8d11acee436dd86cccbe8a2256e130bf7e0

Contents?: true

Size: 484 Bytes

Versions: 2

Compression:

Stored size: 484 Bytes

Contents

module Lurker
  class Sandbox
    def initialize(app)
      @app = app
    end

    def call(env)
      ActiveRecord::Base.transaction do
        @result = @app.call(env)
        raise ActiveRecord::Rollback if called_from_lurker?(env)
      end
      @result
    end

    private

    def called_from_lurker?(env)
      return false if (referer = env['HTTP_REFERER']).blank?
      url = URI.parse referer
      url.path.starts_with? "/#{Lurker::DEFAULT_URL_BASE}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lurker-0.5.1 lib/lurker/sandbox.rb
lurker-0.5.0 lib/lurker/sandbox.rb