Switch to aliasing methods

This commit is contained in:
Mike Angell
2019-08-31 20:32:07 +10:00
parent 0521d78b30
commit cbea19b59f
6 changed files with 37 additions and 37 deletions

View File

@@ -80,3 +80,7 @@ require 'liquid/usage'
# Load all the tags of the standard library
#
Dir["#{__dir__}/liquid/tags/*.rb"].each { |f| require f }
# Load all usage tracking
#
Dir["#{__dir__}/liquid/usages/*.rb"].each { |f| require f }

View File

@@ -4,7 +4,11 @@ module Liquid
@messages = {}
class << self
def enable
Dir["#{__dir__}/usages/*.rb"].each { |f| require f }
Liquid::Context.send(:alias_method, :try_variable_find_in_environments, :try_variable_find_in_environments_usage)
end
def disable
Liquid::Context.send(:alias_method, :try_variable_find_in_environments, :try_variable_find_in_environments_original)
end
def track(message)

View File

@@ -1,13 +1,15 @@
module Liquid
class Context
remove_method :try_variable_find_in_environments
def try_variable_find_in_environments(key, raise_on_not_found:)
alias try_variable_find_in_environments_original try_variable_find_in_environments
def try_variable_find_in_environments_usage(key, raise_on_not_found:)
Usage.track("Using try_variable_find_in_environment")
@environments.each do |environment|
found_variable = lookup_and_evaluate(environment, key, raise_on_not_found: raise_on_not_found)
if !found_variable.nil? || @strict_variables && raise_on_not_found
return found_variable
end
Usage.track("try_variable_find_in_environment reports Nil but responds to key") if environment.key?(key)
end
@static_environments.each do |environment|
@@ -15,6 +17,7 @@ module Liquid
if !found_variable.nil? || @strict_variables && raise_on_not_found
return found_variable
end
Usage.track("try_variable_find_in_environment reports Nil but responds to key") if environment.key?(key)
end
nil

View File

@@ -1,34 +0,0 @@
require 'test_helper'
module Liquid
class TestUsage < Usage
@messages = {}
class << self
def enable
Dir["#{__dir__}/usages/*.rb"].each { |f| require f }
end
end
end
end
class UsageTest < Minitest::Test
include Liquid
Usage.enable
def test_test_usages
Dir["#{__dir__}/usages/*.rb"].each { |f| require f }
template = Template.parse(%({{test}}))
assert_equal 'worked', template.render!('test' => 'worked')
assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully')
assert_equal true, Usage.results["Using try_variable_find_in_environment"]
end
def test_live_usages
template = Template.parse(%({{test}}))
assert_equal 'worked', template.render!('test' => 'worked')
assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully')
assert_equal true, Usage.results["Usage is enabled"]
end
end

View File

@@ -0,0 +1,14 @@
require 'test_helper'
class TryVariablesUsageTest < Minitest::Test
include Liquid
def test_test_usages
Usage.enable
template = Template.parse(%({{test}}))
assert_equal 'worked', template.render!('test' => 'worked')
assert_equal 'worked wonderfully', template.render!('test' => 'worked wonderfully')
assert_equal true, Usage.results["Using try_variable_find_in_environment"]
Usage.disable
end
end

View File

@@ -0,0 +1,9 @@
require 'test_helper'
class UsageEnabledUsageTest < Minitest::Test
include Liquid
def test_live_usages
assert_equal true, Usage.results["Usage is enabled"]
end
end