Sha256: d8abd5c739ab7d1262ac365fe777a7f1e1a9a5916b6932e5a97ccc5b76def82c
Contents?: true
Size: 1.44 KB
Versions: 4
Compression:
Stored size: 1.44 KB
Contents
module Xray # This module implements the old ActiveSupport alias_method_chain feature # with a new name, and without the deprecation warnings. In ActiveSupport 5+, # this style of patching was deprecated in favor of Module.prepend. But # Module.prepend is not present in Ruby 1.9, which we would still like to # support. So we continue to use of alias_method_chain, albeit with a # different name to avoid collisions. # # TODO: remove this and drop support for Ruby 1.9. # module Aliasing # This code is copied and pasted from ActiveSupport, but with :xray # hardcoded as the feature name, and with the deprecation warning removed. def xray_method_alias(target) feature = :xray # Strip out punctuation on predicates, bang or writer methods since # e.g. target?_without_feature is not a valid method name. aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1 yield(aliased_target, punctuation) if block_given? with_method = "#{aliased_target}_with_#{feature}#{punctuation}" without_method = "#{aliased_target}_without_#{feature}#{punctuation}" alias_method without_method, target alias_method target, with_method case when public_method_defined?(without_method) public target when protected_method_defined?(without_method) protected target when private_method_defined?(without_method) private target end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
xray-rails-0.3.3 | lib/xray/aliasing.rb |
xray-rails-0.3.2 | lib/xray/aliasing.rb |
xray-rails-0.3.1 | lib/xray/aliasing.rb |
xray-rails-0.3.0 | lib/xray/aliasing.rb |