entraceable 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3319743764d1749e083170ace3cf2e86c36e19cf
4
- data.tar.gz: ea9fadd38d7e3e800819dc149a78740f8f7332a0
3
+ metadata.gz: 71c64b7b1712139a5ac3d9001a5ea7d924d25cfb
4
+ data.tar.gz: 992b61bc63a6fcc1f2b50322d59d378306d96bd9
5
5
  SHA512:
6
- metadata.gz: 79bf32651952e6511b58937d508eeb9e8c2f55213c919cf131138fc437194aa93be75e29cca1996d4d6906364509dc6fb9703d4da1f520127ea1f9d23184b0c7
7
- data.tar.gz: ebfe2c4187c98ada25e48bdb7adca5a263ab099df34d981c7fde9b70f66b3e2e316b6b4ccda1cc9b63e08a9ae3aac5f38a5e29ef3a73b7373a6a5c6b0e8ce8d2
6
+ metadata.gz: f5cfd81abec9e31baa97388da547689ed6ee8445f59cd03c775e4c5c8b427c43de9f81f12e7691f1b7328a4e844ed4bf90aeafbd246d081d7c4dd9b616ce2fc8
7
+ data.tar.gz: 9724a4f75b68e38c65d71fa51eb0cf374a15bb7d0bec0a78cb08634947b379e1f471313ba732f54197044d29998005c666f9c408c4e4d3d70474142090553613
data/README.md CHANGED
@@ -55,7 +55,7 @@ Tag and level are available:
55
55
  ```ruby
56
56
  class Example
57
57
  entraceable :add, tag: "Example"
58
- entraceable :add, level: :warn
58
+ entraceable :sub, level: :warn
59
59
  end
60
60
  ```
61
61
 
data/lib/entraceable.rb CHANGED
@@ -7,26 +7,6 @@ module Entraceable
7
7
  class << self
8
8
  attr_accessor :preference
9
9
 
10
- def default_level
11
- preference.default_level
12
- end
13
-
14
- def default_level=(default_level)
15
- preference.default_level = default_level
16
- end
17
-
18
- def disable
19
- preference.disable
20
- end
21
-
22
- def enable
23
- preference.enable
24
- end
25
-
26
- def enabled?
27
- preference.enabled?
28
- end
29
-
30
10
  def logger
31
11
  @logger ||= Rails.logger
32
12
  end
@@ -34,20 +14,30 @@ module Entraceable
34
14
  def logger=(arg)
35
15
  @logger = arg
36
16
  end
17
+
18
+ def method_missing(method, *args, &block)
19
+ raise NoMethodError.new %q(undefined method `#{method}' for #{preference}:#{preference.class}) unless accept? method
20
+ preference.__send__ method, *args, &block
21
+ end
22
+
23
+ private
24
+ def accept?(method)
25
+ %w(default_level default_level= disable enable enabled?).map(&:intern).include? method
26
+ end
37
27
  end
38
28
 
39
29
  def entraceable(method, tag: nil, level: nil)
40
30
  alias_name = alias_name_for method
31
+ __send__ :alias_method, alias_name, method
41
32
  class_eval <<-EOS
42
- alias_method :#{alias_name}, :#{method}
43
- def #{method}(*args)
33
+ def #{method}(*args, &block)
44
34
  indent = " " * ((@indent_level ||= 0) * 2)
45
35
  level = (#{level.inspect} || Entraceable.default_level).intern
46
- puts = ->c{Entraceable.logger.tagged(%Q(#{tag})) {Entraceable.logger.send level, indent + c} if Entraceable.enabled?}
36
+ puts = ->c{Entraceable.logger.tagged(%Q(#{tag})) {Entraceable.logger.__send__ level, indent + c} if Entraceable.enabled?}
47
37
  puts.call %Q(#{method} is called with arguments, \#\{args.map(&:inspect).join(", ")\})
48
38
  @indent_level += 1
49
39
  begin
50
- send(:#{alias_name}, *args).tap{|result|puts.call %Q(#{method} returns \#\{result\})}
40
+ __send__(:#{alias_name}, *args, &block).tap{|result|puts.call %Q(#{method} returns \#\{result\})}
51
41
  ensure
52
42
  @indent_level -= 1
53
43
  end
@@ -57,11 +47,9 @@ module Entraceable
57
47
 
58
48
  def distraceable(method)
59
49
  alias_name = alias_name_for method
60
- class_eval <<-EOS
61
- remove_method :#{method}
62
- alias_method :#{method}, :#{alias_name}
63
- remove_method :#{alias_name}
64
- EOS
50
+ __send__ :remove_method, method
51
+ __send__ :alias_method, method, alias_name
52
+ __send__ :remove_method, alias_name
65
53
  end
66
54
 
67
55
  private
@@ -1,3 +1,3 @@
1
1
  module Entraceable
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entraceable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiji Yoshida
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-03 00:00:00.000000000 Z
11
+ date: 2017-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler