subserver 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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