dizby 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.rubocop.yml +35 -0
  4. data/.yardext/config_access_handler.rb +84 -0
  5. data/.yardopts +17 -0
  6. data/Gemfile +8 -0
  7. data/LICENSE +1 -1
  8. data/Rakefile +40 -0
  9. data/dizby.gemspec +13 -5
  10. data/lib/dizby.rb +2 -0
  11. data/lib/dizby/access/control_list.rb +2 -0
  12. data/lib/dizby/access/entry.rb +2 -0
  13. data/lib/dizby/access/insecure.rb +2 -0
  14. data/lib/dizby/access/list.rb +2 -0
  15. data/lib/dizby/converter/simple.rb +2 -0
  16. data/lib/dizby/converter/timed.rb +2 -0
  17. data/lib/dizby/distributed/array.rb +2 -0
  18. data/lib/dizby/distributed/object.rb +2 -0
  19. data/lib/dizby/distributed/proxy.rb +2 -0
  20. data/lib/dizby/distributed/semi_proxy.rb +2 -0
  21. data/lib/dizby/distributed/undumpable.rb +2 -0
  22. data/lib/dizby/distributed/unknown.rb +2 -0
  23. data/lib/dizby/error.rb +2 -0
  24. data/lib/dizby/protocol/basic.rb +2 -0
  25. data/lib/dizby/protocol/manager.rb +2 -0
  26. data/lib/dizby/protocol/refined.rb +2 -0
  27. data/lib/dizby/protocols/dead.rb +2 -0
  28. data/lib/dizby/protocols/secure.rb +2 -0
  29. data/lib/dizby/protocols/tcp.rb +3 -2
  30. data/lib/dizby/protocols/unix.rb +2 -0
  31. data/lib/dizby/server/abstract.rb +3 -1
  32. data/lib/dizby/server/basic.rb +2 -0
  33. data/lib/dizby/server/registration.rb +2 -0
  34. data/lib/dizby/service.rb +2 -4
  35. data/lib/dizby/stream/client.rb +2 -0
  36. data/lib/dizby/stream/connection.rb +2 -0
  37. data/lib/dizby/stream/messenger.rb +2 -0
  38. data/lib/dizby/stream/query_ref.rb +2 -0
  39. data/lib/dizby/stream/readable.rb +2 -0
  40. data/lib/dizby/stream/writable.rb +2 -0
  41. data/lib/dizby/tunnel/abstract.rb +2 -0
  42. data/lib/dizby/tunnel/basic.rb +2 -0
  43. data/lib/dizby/tunnel/basic_spawn.rb +2 -0
  44. data/lib/dizby/tunnel/bidirectional_strategy.rb +2 -0
  45. data/lib/dizby/tunnel/factory.rb +2 -0
  46. data/lib/dizby/tunnel/local_strategy.rb +2 -0
  47. data/lib/dizby/tunnel/spawn_command.rb +2 -0
  48. data/lib/dizby/tunnel/spawned.rb +2 -0
  49. data/lib/dizby/tunnel/tunnelable_local.rb +2 -0
  50. data/lib/dizby/tunnel/tunnelable_remote.rb +2 -0
  51. data/lib/dizby/utility/classic_access.rb +2 -0
  52. data/lib/dizby/utility/configurable.rb +2 -0
  53. data/lib/dizby/utility/delegator.rb +2 -0
  54. data/lib/dizby/utility/force_bind.rb +21 -0
  55. data/lib/dizby/utility/io_barrier.rb +2 -0
  56. data/lib/dizby/utility/log.rb +5 -3
  57. data/lib/dizby/utility/monitor.rb +2 -0
  58. data/lib/dizby/utility/polymorphic_delegated.rb +12 -9
  59. data/lib/dizby/utility/self_pipe.rb +2 -0
  60. data/lib/dizby/utility/semi_built.rb +2 -0
  61. data/lib/dizby/utility/string.rb +2 -0
  62. data/lib/dizby/utility/timed_collection.rb +2 -0
  63. data/lib/dizby/utility/timed_state.rb +4 -2
  64. data/lib/dizby/version.rb +3 -1
  65. data/lib/dizby/worker/connection.rb +2 -0
  66. data/lib/dizby/worker/invoke_method.rb +3 -1
  67. data/lib/dizby/worker/server.rb +2 -0
  68. data/test/test_helper.rb +18 -0
  69. metadata +111 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5942da7c03a278335c9ed7601035bada58a1fe0f
4
- data.tar.gz: 4edfa688cb39af31316e8b55586274f910f00090
3
+ metadata.gz: d4080d3f044ff4c0c6cd8b41abad05ec30461d78
4
+ data.tar.gz: cd7b7a5458791216dfd940e97a746ad17ea78d96
5
5
  SHA512:
6
- metadata.gz: 63553d5c0ea0238b8337cdf87692f9da50792e14dc1df9cc079674275756097b2b3a968031491fae2589b20d5c70b6583a181b40267a3c22201cd17f8a769f3d
7
- data.tar.gz: 684fbfdc941b8a823c81967fff3a711348edd9fbfbe3d4167e629ec0df07dd0bfc6952231b11fee0191ba70093d2e002b08b239930f63d731b08e4f6ca971792
6
+ metadata.gz: a47ee01131b11a523c0df2c517f3be902a0a72c76736f193c1c840d6441eee476482f418ccec144a48b01d5934a092f15495e51747b57918d42ad23f6ece7138
7
+ data.tar.gz: cf6d8453e2378b29777b12747029c6758829bc8b318f66c87b2c63149c55b61ffc58c47996ed0fa0c8015af5deab80a5480920a7b810b4bb9cda9eac85b3addc
@@ -0,0 +1,9 @@
1
+ Gemfile.lock
2
+
3
+ *.gem
4
+ /pkg/
5
+
6
+ /.yardoc/
7
+ /_yardoc/
8
+
9
+ /coverage/
@@ -1,5 +1,9 @@
1
1
  ---
2
2
 
3
+ AllCops:
4
+ Include:
5
+ - '.yardext/**/*.rb'
6
+
3
7
  Style/Documentation:
4
8
  Enabled: false
5
9
 
@@ -8,3 +12,34 @@ Metrics/MethodLength:
8
12
 
9
13
  Style/SpecialGlobalVars:
10
14
  Enabled: false
15
+
16
+ Style/AutoResourceCleanup:
17
+ Enabled: true
18
+
19
+ Style/CollectionMethods:
20
+ Enabled: true
21
+
22
+ Style/Copyright:
23
+ Enabled: true
24
+ Notice: '^# Copyright \(c\) 2\d{3} Nathan Currier$'
25
+
26
+ Style/Encoding:
27
+ Enabled: true
28
+
29
+ Style/MethodCalledOnDoEndBlock:
30
+ Enabled: true
31
+
32
+ Style/OptionHash:
33
+ Enabled: true
34
+
35
+ Style/Send:
36
+ Enabled: true
37
+
38
+ Style/StringMethods:
39
+ Enabled: true
40
+
41
+ Style/SymbolArray:
42
+ Enabled: true
43
+
44
+ Lint/LiteralInInterpolation:
45
+ Enabled: true
@@ -0,0 +1,84 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ class ConfigAccessHandler < YARD::Handlers::Ruby::AttributeHandler
5
+ handles method_call(:config_reader)
6
+ handles method_call(:config_writer)
7
+ handles method_call(:config_accessor)
8
+ namespace_only
9
+
10
+ def access_permissions
11
+ case statement.method_name(true)
12
+ when :config_reader
13
+ [true, true]
14
+ when :config_writer
15
+ [false, true]
16
+ when :config_accessor
17
+ [true, true]
18
+ else
19
+ [false, false]
20
+ end
21
+ end
22
+
23
+ def process_impl(method, permission)
24
+ if permission
25
+ obj = MethodObject.new(namespace, method, scope)
26
+ yield obj
27
+
28
+ register(obj)
29
+ obj
30
+ else
31
+ namespace.children.find do |o|
32
+ o.name == method.to_sym && o.scope == scope
33
+ end
34
+ end
35
+ end
36
+
37
+ def store_obj(type, name, obj)
38
+ namespace.attributes[scope][name][type] = obj if obj
39
+ end
40
+
41
+ def process_reader(attribute, permission)
42
+ final = process_impl(attribute, permission) do |obj|
43
+ obj.signature ||= "def #{attribute}"
44
+ obj.source = "#{obj.signature}\n @config[:#{attribute}]\nend"
45
+ if obj.docstring.blank?(false)
46
+ obj.docstring =
47
+ "Returns the value of configuration attribute #{attribute}"
48
+ end
49
+ end
50
+
51
+ store_obj :read, attribute, final
52
+ end
53
+
54
+ def process_writer(attribute, permission)
55
+ final = process_impl("#{attribute}=", permission) do |obj|
56
+ obj.parameters = [['value', nil]]
57
+ obj.signature ||= "def #{attribute}=(value)"
58
+ obj.source ||= "#{obj.signature}\n @config[:#{attribute}] = value\nend"
59
+ obj.docstring = <<-eos if obj.docstring.blank?(false)
60
+ Sets the configuration attribute #{attribute}
61
+ @param value the value to set the attribute #{attribute} to.
62
+ eos
63
+ end
64
+
65
+ store_obj :write, attribute, final
66
+ end
67
+
68
+ def process_access(name, read, write)
69
+ read, write = access_permissions
70
+ namespace.attributes[scope][name] ||= SymbolHash[read: nil, write: nil]
71
+
72
+ process_reader(name, read)
73
+ process_writer(name, write)
74
+ end
75
+
76
+ def process
77
+ return if statement.type == :var_ref || statement.type == :vcall
78
+ params = statement.parameters(false).dup
79
+
80
+ validated_attribute_names(params).each do |name|
81
+ process_access(name, read, write)
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,17 @@
1
+ --readme README.md
2
+ --title Dizby Documentation
3
+ --charset utf-8
4
+
5
+ --markup markdown
6
+ --markup-provider kramdown
7
+ --output-dir _yardoc
8
+
9
+ --protected
10
+ --private
11
+ --default-return ''
12
+
13
+ --load .yardext/config_access_handler.rb
14
+ lib/**/*.rb
15
+ -
16
+ doc/*.md
17
+ LICENSE
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ source 'https://rubygems.org'
5
+
6
+ gemspec
7
+
8
+ gem 'force_bind', require: false, platforms: :mri
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013-2015, Nathan Currier
1
+ Copyright (c) 2013-2016, Nathan Currier
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'rubygems'
5
+ require 'bundler'
6
+
7
+ Bundler.setup(:default, :development)
8
+
9
+ require 'bundler/gem_tasks'
10
+
11
+ CLEAN.include '.yardoc'
12
+ CLOBBER.include '_yardoc', 'coverage'
13
+
14
+ require 'yard'
15
+ require 'yard/rake/yardoc_task'
16
+ YARD::Rake::YardocTask.new(:yard)
17
+
18
+ require 'rubocop/rake_task'
19
+ RuboCop::RakeTask.new(:rubocop) do |t|
20
+ t.fail_on_error = false
21
+ end
22
+ task('rubocop:auto_correct').clear
23
+
24
+ require 'rake/testtask'
25
+ Rake::TestTask.new(:test) do |t|
26
+ t.libs << 'test'
27
+ t.test_files = ['test/test_helper.rb']
28
+ t.pattern = 'test/**/*_test.rb'
29
+ t.verbose = true
30
+ end
31
+
32
+ namespace :test do
33
+ desc 'Generate a test coverage report'
34
+ task :coverage do
35
+ ENV['COVERAGE'] = 'true'
36
+ task(:test).invoke
37
+ end
38
+ end
39
+
40
+ task default: %i(rubocop test)
@@ -1,4 +1,6 @@
1
- # coding: utf-8
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
2
4
  require './lib/dizby/version'
3
5
 
4
6
  Gem::Specification.new do |spec|
@@ -11,6 +13,7 @@ Gem::Specification.new do |spec|
11
13
  spec.description = 'Distributed Ruby'
12
14
  spec.summary = 'Distributed Ruby'
13
15
  spec.homepage = 'https://gem.rideliner.net'
16
+ spec.has_rdoc = 'yard'
14
17
 
15
18
  spec.files = `git ls-files -z`.split("\x0")
16
19
  spec.bindir = 'bin'
@@ -18,10 +21,15 @@ Gem::Specification.new do |spec|
18
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
22
  spec.require_paths = ['lib']
20
23
 
21
- spec.required_ruby_version = '~> 2.0'
24
+ spec.add_runtime_dependency 'net-ssh'
22
25
 
23
- spec.add_runtime_dependency 'net-ssh', '~> 3.0'
26
+ spec.add_dependency 'bundler', '>= 1.11.2'
24
27
 
25
- spec.add_development_dependency 'rubocop', '~> 0.35'
26
- spec.add_development_dependency 'reek', '~> 3.7'
28
+ spec.add_development_dependency 'rubocop'
29
+ spec.add_development_dependency 'yard'
30
+ spec.add_development_dependency 'kramdown'
31
+ spec.add_development_dependency 'rake'
32
+ spec.add_development_dependency 'minitest'
33
+ spec.add_development_dependency 'simplecov'
34
+ spec.add_development_dependency 'codecov'
27
35
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/version'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/access/entry'
3
5
  require 'dizby/access/list'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'ipaddr'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/utility/string'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  module Access
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  class IdConverter
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/utility/timed_collection'
3
5
  require 'dizby/converter/simple'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/distributed/object'
3
5
  require 'dizby/distributed/undumpable'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/distributed/proxy'
3
5
  require 'dizby/access/insecure'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/distributed/unknown'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/server/registration'
3
5
  require 'dizby/distributed/proxy'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  module UndumpableObject
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/error'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  class DistributedError < RuntimeError; end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/manager'
3
5
  require 'dizby/protocol/refined'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/error'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  PROTOCOL_REGEX = {
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/basic'
3
5
  require 'dizby/server/abstract'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/basic'
3
5
  require 'dizby/stream/client'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/basic'
3
5
  require 'dizby/stream/client'
@@ -83,12 +85,11 @@ module Dizby
83
85
  end
84
86
 
85
87
  config_reader :tcp_acl
86
- private :tcp_acl
87
88
 
88
89
  def self.open_socket_inaddr_any(host, port)
89
90
  infos = Socket.getaddrinfo(host, nil, Socket::AF_UNSPEC,
90
91
  Socket::SOCK_STREAM, 0, Socket::AI_PASSIVE)
91
- families = Hash[*infos.collect { |af, *_| af }.uniq.zip([]).flatten]
92
+ families = Hash[*infos.map { |af, *_| af }.uniq.zip([]).flatten]
92
93
  return TCPServer.open('0.0.0.0', port) if families.key?('AF_INET')
93
94
  return TCPServer.open('::', port) if families.key?('AF_INET6')
94
95
  TCPServer.open(port)
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/basic'
3
5
  require 'dizby/stream/client'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/manager'
3
5
  require 'dizby/distributed/object'
@@ -10,7 +12,7 @@ module Dizby
10
12
 
11
13
  def initialize(config, &log_transform)
12
14
  @config = config
13
- @log = Dizby.create_logger(config[:logging], &log_transform)
15
+ @log = Dizby.create_logger(config[:log] || {}, &log_transform)
14
16
  end
15
17
 
16
18
  attr_reader :log
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/stream/query_ref'
3
5
  require 'dizby/utility/polymorphic_delegated'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/utility/monitor'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/protocol/manager'
3
5
  require 'dizby/converter/simple'
@@ -47,10 +49,6 @@ module Dizby
47
49
  idconv: IdConverter,
48
50
  argc_limit: 256,
49
51
  load_limit: 256 * 1024 * 100,
50
- logging: {
51
- level: Logger::ERROR,
52
- output: $stderr
53
- },
54
52
  tcp_acl: nil
55
53
  }
56
54
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/stream/messenger'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/stream/messenger'
3
5
  require 'dizby/utility/self_pipe'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/stream/readable'
3
5
  require 'dizby/stream/writable'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  # Acts as an array or hash index to a remote object
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/distributed/semi_proxy'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/distributed/undumpable'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'net/ssh'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/tunnel/abstract'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/tunnel/abstract'
3
5
  require 'dizby/error'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/tunnel/tunnelable_local'
3
5
  require 'dizby/tunnel/tunnelable_remote'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/tunnel/local_strategy'
3
5
  require 'dizby/tunnel/bidirectional_strategy'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/tunnel/tunnelable_local'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'shellwords'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  # require the whole package, minimizes command length
3
5
  require 'dizby'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  module TunnelableLocal
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  module TunnelableRemote
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  module ClassicAttributeAccess
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  module Configurable
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  class Delegator
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'force_bind' if RUBY_ENGINE == 'ruby'
5
+
6
+ module Dizby
7
+ case RUBY_ENGINE
8
+ when 'rbx'
9
+ def self.force_bind(bound_obj, method)
10
+ method_args = [method.defined_in, method.executable, method.name]
11
+
12
+ Method.new(bound_obj, *method_args)
13
+ end
14
+ when 'ruby'
15
+ def self.force_bind(bound_obj, method)
16
+ method.force_bind(bound_obj)
17
+ end
18
+ else
19
+ fail "force binding is not supported on #{RUBY_ENGINE}"
20
+ end
21
+ end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  class IOBarrier
@@ -1,9 +1,11 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'logger'
3
5
 
4
6
  module Dizby
5
- def self.create_logger(config, &transformer)
6
- log = Logger.new(config[:output])
7
+ def self.create_logger(output: $stderr, level: Logger::ERROR, &transformer)
8
+ log = Logger.new(output)
7
9
 
8
10
  default_formatter = Logger::Formatter.new
9
11
  log.formatter = proc do |severity, datetime, progname, msg|
@@ -11,7 +13,7 @@ module Dizby
11
13
  default_formatter.call(severity, datetime, progname, msg)
12
14
  end
13
15
 
14
- log.level = config[:level]
16
+ log.level = level
15
17
 
16
18
  log.define_singleton_method(:backtrace) do |exception|
17
19
  error(exception.inspect)
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'monitor'
3
5
 
@@ -1,21 +1,24 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/utility/classic_access'
3
5
  require 'dizby/utility/delegator'
6
+ require 'dizby/utility/force_bind'
4
7
 
5
8
  module Dizby
6
9
  module PolymorphicDelegated
7
10
  def self.included(base)
8
11
  base.extend(ClassMethods)
9
- base.send(:include, InstanceMethods)
12
+ base.__send__(:include, InstanceMethods)
10
13
 
11
14
  base.class_eval do
12
15
  intercepted = [base, Object, Kernel, BasicObject, InstanceMethods]
13
- intercepted = intercepted.map(&:instance_methods).inject(&:-)
16
+ intercepted = intercepted.map(&:instance_methods).reduce(&:-)
14
17
 
15
18
  @__delegated_methods__ =
16
19
  intercepted.each_with_object({}) do |name, methods|
17
20
  methods[name.to_sym] = base.instance_method(name)
18
- base.send(:undef_method, name)
21
+ base.__send__(:undef_method, name)
19
22
  end
20
23
  end
21
24
  end
@@ -28,20 +31,20 @@ module Dizby
28
31
  end
29
32
 
30
33
  def method_added(name)
31
- return if [:method_missing, :initialize].include?(name)
34
+ return if %i(method_missing initialize).include?(name)
32
35
  @__delegated_methods__[name] = instance_method(name)
33
- send(:undef_method, name)
36
+ __send__(:undef_method, name)
34
37
  nil
35
38
  end
36
39
  end
37
40
 
38
41
  module InstanceMethods
39
42
  def __delegate__(name, delegator, *args, &block)
40
- method = self.class.__delegated_methods__[name]
41
- method_args = [method.defined_in, method.executable, method.name]
43
+ unbound = self.class.__delegated_methods__[name]
42
44
 
43
- # NOTE: This only works in Rubinius
44
- Method.new(delegator, *method_args).call(*args, &block)
45
+ bound = Dizby.force_bind(delegator, unbound)
46
+
47
+ bound.call(*args, &block)
45
48
  end
46
49
 
47
50
  def method_missing(name, *args, &block)
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  SelfPipe = Struct.new(:read, :write) do
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  class SemibuiltObject
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  def self.any_to_s(obj)
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/utility/monitor'
3
5
  require 'dizby/utility/timed_state'
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
5
  class TimedState
@@ -8,7 +10,7 @@ module Dizby
8
10
 
9
11
  def update
10
12
  previous = @last_update
11
- @last_update = Time.now
13
+ @last_update = Time.now.utc
12
14
  timediff = (@last_update - previous) * 1000
13
15
 
14
16
  @time += timediff
@@ -22,7 +24,7 @@ module Dizby
22
24
  def revive
23
25
  @state = :active
24
26
  @time = 0
25
- @last_update = Time.now
27
+ @last_update = Time.now.utc
26
28
  end
27
29
 
28
30
  private
@@ -1,4 +1,6 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  module Dizby
3
- VERSION = '1.3.0'
5
+ VERSION = '1.4.0'
4
6
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/worker/invoke_method'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/distributed/array'
3
5
 
@@ -5,7 +7,7 @@ module Dizby
5
7
  class InvokeMethod
6
8
  def initialize(server, obj, msg, argv, block)
7
9
  @obj = obj
8
- @msg_id = msg.intern
10
+ @msg_id = msg.to_sym
9
11
  @argv = argv
10
12
  @block = block && proc { |*args| call_block(block, *args) }
11
13
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
1
3
 
2
4
  require 'dizby/worker/connection'
3
5
 
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'minitest/autorun'
5
+
6
+ if ENV['COVERAGE']
7
+ require 'simplecov'
8
+ SimpleCov.start do
9
+ add_filter 'test'
10
+ end
11
+
12
+ if ENV['CI']
13
+ require 'codecov'
14
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
15
+ end
16
+ end
17
+
18
+ require 'dizby'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dizby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Currier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-22 00:00:00.000000000 Z
11
+ date: 2016-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  type: :runtime
@@ -16,42 +16,126 @@ dependencies:
16
16
  prerelease: false
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '3.0'
21
+ version: '0'
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ type: :runtime
29
+ name: bundler
30
+ prerelease: false
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 1.11.2
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.11.2
27
41
  - !ruby/object:Gem::Dependency
28
42
  type: :development
29
43
  name: rubocop
30
44
  prerelease: false
31
45
  requirement: !ruby/object:Gem::Requirement
32
46
  requirements:
33
- - - "~>"
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ type: :development
57
+ name: yard
58
+ prerelease: false
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ type: :development
71
+ name: kramdown
72
+ prerelease: false
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ type: :development
85
+ name: rake
86
+ prerelease: false
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ type: :development
99
+ name: minitest
100
+ prerelease: false
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ type: :development
113
+ name: simplecov
114
+ prerelease: false
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
34
118
  - !ruby/object:Gem::Version
35
- version: '0.35'
119
+ version: '0'
36
120
  version_requirements: !ruby/object:Gem::Requirement
37
121
  requirements:
38
- - - "~>"
122
+ - - ">="
39
123
  - !ruby/object:Gem::Version
40
- version: '0.35'
124
+ version: '0'
41
125
  - !ruby/object:Gem::Dependency
42
126
  type: :development
43
- name: reek
127
+ name: codecov
44
128
  prerelease: false
45
129
  requirement: !ruby/object:Gem::Requirement
46
130
  requirements:
47
- - - "~>"
131
+ - - ">="
48
132
  - !ruby/object:Gem::Version
49
- version: '3.7'
133
+ version: '0'
50
134
  version_requirements: !ruby/object:Gem::Requirement
51
135
  requirements:
52
- - - "~>"
136
+ - - ">="
53
137
  - !ruby/object:Gem::Version
54
- version: '3.7'
138
+ version: '0'
55
139
  description: Distributed Ruby
56
140
  email:
57
141
  - nathan.currier@gmail.com
@@ -59,8 +143,13 @@ executables: []
59
143
  extensions: []
60
144
  extra_rdoc_files: []
61
145
  files:
146
+ - ".gitignore"
62
147
  - ".rubocop.yml"
148
+ - ".yardext/config_access_handler.rb"
149
+ - ".yardopts"
150
+ - Gemfile
63
151
  - LICENSE
152
+ - Rakefile
64
153
  - dizby.gemspec
65
154
  - lib/dizby.rb
66
155
  - lib/dizby/access/control_list.rb
@@ -106,6 +195,7 @@ files:
106
195
  - lib/dizby/utility/classic_access.rb
107
196
  - lib/dizby/utility/configurable.rb
108
197
  - lib/dizby/utility/delegator.rb
198
+ - lib/dizby/utility/force_bind.rb
109
199
  - lib/dizby/utility/io_barrier.rb
110
200
  - lib/dizby/utility/log.rb
111
201
  - lib/dizby/utility/monitor.rb
@@ -119,6 +209,7 @@ files:
119
209
  - lib/dizby/worker/connection.rb
120
210
  - lib/dizby/worker/invoke_method.rb
121
211
  - lib/dizby/worker/server.rb
212
+ - test/test_helper.rb
122
213
  homepage: https://gem.rideliner.net
123
214
  licenses:
124
215
  - BSD-3-Clause
@@ -129,9 +220,9 @@ require_paths:
129
220
  - lib
130
221
  required_ruby_version: !ruby/object:Gem::Requirement
131
222
  requirements:
132
- - - "~>"
223
+ - - ">="
133
224
  - !ruby/object:Gem::Version
134
- version: '2.0'
225
+ version: '0'
135
226
  required_rubygems_version: !ruby/object:Gem::Requirement
136
227
  requirements:
137
228
  - - ">="
@@ -143,4 +234,6 @@ rubygems_version: 2.4.8
143
234
  signing_key:
144
235
  specification_version: 4
145
236
  summary: Distributed Ruby
146
- test_files: []
237
+ test_files:
238
+ - test/test_helper.rb
239
+ has_rdoc: yard