subserver 0.2.1 → 0.2.2

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: 391f8405b0cd22e8f4aa640004133d2d73f52937
4
- data.tar.gz: ed7f18529bd0c0d5aa297fc8bb9b0cc5ac271de5
3
+ metadata.gz: 4295d899353208c83176c64e8357e6d6d1618a55
4
+ data.tar.gz: 95e1bb5f162351711be555a2ab70ee5c7a7b7bb2
5
5
  SHA512:
6
- metadata.gz: 7bb3386a5cb879d6905caed2f65789a77ce7c3c673861bf0277563bea6b34204a7f4ce0803c14f4f44255a48dc0ccad2d4f9ffe475ac56e764cf45883ae3843a
7
- data.tar.gz: ce1bfe6ba1fa69aeb424051c0932f019cd9284b885d36d76c5e25dc7fbf6b8d6c587d7f061bde9a715e28f210dbaa82a7bf3f16d62cd40fe3744a079268e38b4
6
+ metadata.gz: 3ca18b4e225c79fd7b2f0d490697af02678bbe2ca0ae4efe081655d2f6144c442b9fbd760ff2b0756e738d52076b6af97ee0a7d50a9eeafeffe6080533449a30
7
+ data.tar.gz: bfd2a798802e7810e1e82c188493224398e7109524a8d8decac574c7e12811b5fa6cf45378d4c0cfe48a6c83fa9046e625f35644f8f8edcf0c785cd3f62befcb
@@ -3,6 +3,7 @@ module Subserver
3
3
 
4
4
  def self.included(base)
5
5
  base.extend(ClassMethods)
6
+ base.subserver_class_attribute :subserver_options_hash
6
7
  end
7
8
 
8
9
  def logger
@@ -10,15 +11,70 @@ module Subserver
10
11
  end
11
12
 
12
13
  module ClassMethods
13
- @subserver_options
14
14
 
15
15
  def subserver_options(opts={})
16
- (@subserver_options ||= Subserver.default_subscriber_options).merge!(opts)
16
+ self.subserver_options_hash = get_subserver_options.merge(opts)
17
17
  end
18
18
 
19
19
  def get_subserver_options
20
- @subserver_options
20
+ self.subserver_options_hash ||= Subserver.default_subscriber_options
21
21
  end
22
+
23
+ def subserver_class_attribute(*attrs)
24
+ instance_reader = true
25
+ instance_writer = true
26
+
27
+ attrs.each do |name|
28
+ singleton_class.instance_eval do
29
+ undef_method(name) if method_defined?(name) || private_method_defined?(name)
30
+ end
31
+ define_singleton_method(name) { nil }
32
+
33
+ ivar = "@#{name}"
34
+
35
+ singleton_class.instance_eval do
36
+ m = "#{name}="
37
+ undef_method(m) if method_defined?(m) || private_method_defined?(m)
38
+ end
39
+ define_singleton_method("#{name}=") do |val|
40
+ singleton_class.class_eval do
41
+ undef_method(name) if method_defined?(name) || private_method_defined?(name)
42
+ define_method(name) { val }
43
+ end
44
+
45
+ if singleton_class?
46
+ class_eval do
47
+ undef_method(name) if method_defined?(name) || private_method_defined?(name)
48
+ define_method(name) do
49
+ if instance_variable_defined? ivar
50
+ instance_variable_get ivar
51
+ else
52
+ singleton_class.send name
53
+ end
54
+ end
55
+ end
56
+ end
57
+ val
58
+ end
59
+
60
+ if instance_reader
61
+ undef_method(name) if method_defined?(name) || private_method_defined?(name)
62
+ define_method(name) do
63
+ if instance_variable_defined?(ivar)
64
+ instance_variable_get ivar
65
+ else
66
+ self.class.public_send name
67
+ end
68
+ end
69
+ end
70
+
71
+ if instance_writer
72
+ m = "#{name}="
73
+ undef_method(m) if method_defined?(m) || private_method_defined?(m)
74
+ attr_writer name
75
+ end
76
+ end
77
+ end
22
78
  end
23
79
 
24
80
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Subserver
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.2"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Hill