dryad 0.2.1 → 0.2.3

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
  SHA256:
3
- metadata.gz: 2940ab87fc2f8b45b3c3cd4cd8db68af37159ad71c1412c675ebed3178b28222
4
- data.tar.gz: 78561f0fd81400b04547df3e835e71c35094dc64308969419b29f49d0b3bf2a7
3
+ metadata.gz: 525db97ef5566a76098259f051be94ae2c572732db0e5f18b9acceba854d2dff
4
+ data.tar.gz: ffa6440cbaac6a8bda53dca85e2a0a963f267c4ace9b060b35c86564b82af015
5
5
  SHA512:
6
- metadata.gz: 603a45988fca0375328a9edc7bbf0c65ab754674619738f5bbaaa805896351775e68710d30996a12a728cd2a5196e8f6cb09e402780dc869e8d734921c3a3fc1
7
- data.tar.gz: 254884b77a97fd7600c0a1bc6d7aaf683703962ce79fa99b7b59d8c82c8fdc57d7581d7308e66abe170ef3e8ea19d9d6b0ee1dade56141c7b73198dbdfc550b0
6
+ metadata.gz: 4d2f5faf15c93ed44762a61afef719d93af01480fe7deff392330c7b327a006cc69a4159ff82f0de7e5de13472f33e6270e74f4db8795df4d96af7c87d29e26c
7
+ data.tar.gz: fb2bb883193a16b9e6b3aab42c3c968c1e151182bde77aaad431748c6bb11395ad31e861ac011a14ccd5ecf779f3bb68dfecdba09f4ee4ab6d0adaba11bff10e
data/Gemfile.lock CHANGED
@@ -1,17 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dryad (0.2.1)
5
- dryad-cluster (= 0.2.1)
6
- dryad-consul (= 0.2.1)
7
- dryad-core (= 0.2.1)
8
- dryad-cluster (0.2.1)
4
+ dryad (0.2.3)
5
+ dryad-cluster (= 0.2.3)
6
+ dryad-consul (= 0.2.3)
7
+ dryad-core (= 0.2.3)
8
+ dryad-cluster (0.2.3)
9
9
  concurrent-ruby (~> 1.1, >= 1.1.5)
10
- dryad-core (= 0.2.1)
11
- dryad-consul (0.2.1)
10
+ dryad-core (= 0.2.3)
11
+ dryad-consul (0.2.3)
12
12
  diplomat (~> 2.2, >= 2.2.4)
13
- dryad-core (= 0.2.1)
14
- dryad-core (0.2.1)
13
+ dryad-core (= 0.2.3)
14
+ dryad-core (0.2.3)
15
15
 
16
16
  GEM
17
17
  remote: https://rubygems.org/
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dryad-cluster (0.2.1)
4
+ dryad-cluster (0.2.3)
5
5
  concurrent-ruby (~> 1.1, >= 1.1.5)
6
- dryad-core (= 0.2.1)
6
+ dryad-core (= 0.2.3)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -14,10 +14,10 @@ GEM
14
14
  diplomat (2.2.4)
15
15
  deep_merge (~> 1.0, >= 1.0.1)
16
16
  faraday (~> 0.9)
17
- dryad-consul (0.2.1)
17
+ dryad-consul (0.2.3)
18
18
  diplomat (~> 2.2, >= 2.2.4)
19
- dryad-core (= 0.2.1)
20
- dryad-core (0.2.1)
19
+ dryad-core (= 0.2.3)
20
+ dryad-core (0.2.3)
21
21
  faraday (0.15.4)
22
22
  multipart-post (>= 1.2, < 3)
23
23
  multipart-post (2.1.1)
@@ -1,5 +1,5 @@
1
1
  module Dryad
2
2
  module Cluster
3
- VERSION = '0.2.1'
3
+ VERSION = '0.2.3'
4
4
  end
5
5
  end
@@ -9,7 +9,6 @@ module Dryad
9
9
  class NoServicesError < Error; end
10
10
 
11
11
  class << self
12
- REGISTRY = Object.const_get(Dryad.configuration.registry)
13
12
  CLUSTERS = {}
14
13
 
15
14
  def round_robin(schema, service_name)
@@ -29,7 +28,8 @@ module Dryad
29
28
  end
30
29
 
31
30
  def sorted_instances(service_name, schema, groups)
32
- sis = REGISTRY.service_instances(service_name, schema, groups)
31
+ registry = Object.const_get(Dryad.configuration.registry)
32
+ sis = registry.service_instances(service_name, schema, groups)
33
33
  sis.sort {|a, b| "#{a.address}:#{a.port}" <=> "#{b.address}:#{b.port}"}
34
34
  end
35
35
  end
@@ -1,5 +1,9 @@
1
1
  RSpec.describe Dryad::Cluster do
2
2
  before do
3
+ Dryad.configure do |config|
4
+ config.registry = 'Dryad::Consul::ServiceRegistry'
5
+ end
6
+
3
7
  @portal = Dryad::Core::Portal.new(
4
8
  schema: Dryad::Core::Schema::HTTP,
5
9
  port: 3000,
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dryad-consul (0.2.1)
4
+ dryad-consul (0.2.3)
5
5
  diplomat (~> 2.2, >= 2.2.4)
6
- dryad-core (= 0.2.1)
6
+ dryad-core (= 0.2.3)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -13,7 +13,7 @@ GEM
13
13
  diplomat (2.2.4)
14
14
  deep_merge (~> 1.0, >= 1.0.1)
15
15
  faraday (~> 0.9)
16
- dryad-core (0.2.1)
16
+ dryad-core (0.2.3)
17
17
  faraday (0.15.4)
18
18
  multipart-post (>= 1.2, < 3)
19
19
  multipart-post (2.1.1)
@@ -0,0 +1,28 @@
1
+ require "rails"
2
+
3
+ module Dryad
4
+ module Consul
5
+ class Railtie < Rails::Railtie
6
+ initializer "dryad_consul.set_consul" do
7
+ ::Diplomat.configure do |config|
8
+ config.url = "http://#{Dryad.configuration.consul[:host]}:#{Dryad.configuration.consul[:port]}"
9
+ config.options = { headers: { "X-Consul-Token" => Dryad.configuration.consul[:token] } } if Dryad.configuration.consul[:token]
10
+ end
11
+ end
12
+
13
+ initializer "dryad_consul.update_active_record_connection" do
14
+ config.after_initialize do
15
+ db_path = "#{Dryad.configuration.namespace}/#{Dryad.configuration.group}/database.yml"
16
+ db_config = Dryad::Consul::ConfigProvider.load(db_path)
17
+ ActiveRecord::Base.configurations = YAML.load(ERB.new(db_config.payload).result)
18
+ ActiveRecord::Base.establish_connection(Rails.env.to_sym)
19
+ rescue Dryad::Core::ConfigurationNotFound => e
20
+ raise e
21
+ rescue e
22
+ puts e.message
23
+ end
24
+ end
25
+ end
26
+ end
27
+ ActiveSupport.run_load_hooks(:dryad_consul, Consul)
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Dryad
2
2
  module Consul
3
- VERSION = '0.2.1'
3
+ VERSION = '0.2.3'
4
4
  end
5
5
  end
@@ -1,5 +1,6 @@
1
1
  require "diplomat"
2
2
  require "dryad"
3
+ require "dryad/consul/railtie" if defined?(Rails)
3
4
  require "dryad/consul/version"
4
5
  require "dryad/consul/service_client"
5
6
  require "dryad/consul/service_registry"
@@ -10,10 +11,5 @@ require "dryad/consul/config_provider"
10
11
  module Dryad
11
12
  module Consul
12
13
  class Error < StandardError; end
13
-
14
- ::Diplomat.configure do |config|
15
- config.url = "http://#{Dryad.configuration.consul[:host]}:#{Dryad.configuration.consul[:port]}"
16
- config.options = { headers: { "X-Consul-Token" => Dryad.configuration.consul[:token] } } if Dryad.configuration.consul[:token]
17
- end
18
14
  end
19
15
  end
@@ -4,6 +4,6 @@ RSpec.describe Dryad::Consul do
4
4
  end
5
5
 
6
6
  it "has configured dependencies" do
7
- expect(::Diplomat.configuration.url).to eq("http://localhost:8500")
7
+ expect(::Diplomat.configuration.url).to eq("http://127.0.0.1:8500")
8
8
  end
9
9
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dryad-core (0.1.0.alpha)
4
+ dryad-core (0.2.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,5 +1,5 @@
1
1
  module Dryad
2
2
  module Core
3
- VERSION = '0.2.1'
3
+ VERSION = '0.2.3'
4
4
  end
5
5
  end
@@ -1,46 +1 @@
1
- require "dryad/configuration"
2
1
  require "dryad/core"
3
- require "yaml"
4
- require "erb"
5
-
6
- DRYAD_COFNIG_FILE = ENV["DRYAD_CONFIG_FILE"] || "config/dryad.yml"
7
-
8
- module Dryad
9
- class Error < StandardError; end
10
-
11
- class << self
12
- attr_accessor :configuration
13
- end
14
-
15
- def self.configuration
16
- @configuration ||= Configuration.new
17
- end
18
-
19
- def self.configure
20
- yield(configuration)
21
- end
22
-
23
- def self.configure_with_file
24
- environment = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "default"
25
- opts = YAML.load(ERB.new(File.read(DRYAD_COFNIG_FILE)).result)[environment] || Configuration::DEFAULT_OPTIONS
26
-
27
- if opts.respond_to? :deep_symbolize_keys!
28
- opts.deep_symbolize_keys!
29
- else
30
- symbolize_keys_deep!(opts)
31
- end
32
-
33
- @configuration = Configuration.new(opts)
34
- end
35
-
36
- private
37
- def self.symbolize_keys_deep!(hash)
38
- hash.keys.each do |k|
39
- symkey = k.respond_to?(:to_sym) ? k.to_sym : k
40
- hash[symkey] = hash.delete k
41
- symbolize_keys_deep! hash[symkey] if hash[symkey].is_a? Hash
42
- end
43
- end
44
- end
45
-
46
- Dryad.configure_with_file if File.exist?(DRYAD_COFNIG_FILE)
@@ -1,10 +1,5 @@
1
- ENV['DRYAD_CONFIG_FILE'] = File.expand_path("dummy/config/dryad.yml", __dir__)
2
-
3
1
  require "bundler/setup"
4
- require "yaml"
5
- require "erb"
6
2
  require "dryad"
7
- require "dryad/core"
8
3
 
9
4
  RSpec.configure do |config|
10
5
  # Enable flags like --only-failures and --next-failure
data/dryad.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  end
20
20
  spec.bindir = "exe"
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
22
23
 
23
24
  spec.add_dependency "dryad-core", Dryad::VERSION
24
25
  spec.add_dependency "dryad-consul", Dryad::VERSION
@@ -0,0 +1,14 @@
1
+ require "rails"
2
+
3
+ module Dryad
4
+ class Railtie < Rails::Railtie
5
+ initializer "dryad.set_configs" do
6
+ ActiveSupport.on_load(:dryad) do
7
+ environment = ENV["RAILS_ENV"] || "default"
8
+ config = Dryad.load_config[environment].deep_symbolize_keys
9
+ Dryad.configuration = Dryad::Configuration.new(config)
10
+ end
11
+ end
12
+ end
13
+ ActiveSupport.run_load_hooks(:dryad, Core)
14
+ end
data/lib/dryad/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dryad
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.3'
3
3
  end
data/lib/dryad.rb CHANGED
@@ -1 +1,40 @@
1
1
  require "dryad/version"
2
+ require "dryad/configuration"
3
+ require "dryad/core"
4
+ require "dryad/railtie" if defined?(Rails)
5
+ require "dryad/consul"
6
+ require "dryad/cluster"
7
+
8
+ module Dryad
9
+ class << self
10
+ attr_accessor :configuration
11
+
12
+ def configuration
13
+ @configuration ||= Configuration.new
14
+ end
15
+
16
+ def configure
17
+ yield(configuration)
18
+ end
19
+
20
+ def load_config
21
+ config_file = Pathname.new(Rails.root.join("config/dryad.yml"))
22
+
23
+ config = if config_file && config_file.exist?
24
+ require "yaml"
25
+ require "erb"
26
+ YAML.load(ERB.new(config_file.read).result) || {}
27
+ else
28
+ raise "Could not load dryad configuration. No such file - #{config_file}"
29
+ end
30
+
31
+ config
32
+ rescue Psych::SyntaxError => e
33
+ raise "YAML syntax error occurred while parsing #{config_file}. " \
34
+ "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
35
+ "Error: #{e.message}"
36
+ rescue => e
37
+ raise e, "Cannot load dryad configuration:\n#{e.message}", e.backtrace
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dryad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pan Jie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2019-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dryad-core
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.1
19
+ version: 0.2.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.1
26
+ version: 0.2.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dryad-consul
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.1
33
+ version: 0.2.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.1
40
+ version: 0.2.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dryad-cluster
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.2.1
47
+ version: 0.2.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.2.1
54
+ version: 0.2.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -140,6 +140,7 @@ files:
140
140
  - dryad-consul/lib/dryad/consul.rb
141
141
  - dryad-consul/lib/dryad/consul/config_provider.rb
142
142
  - dryad-consul/lib/dryad/consul/key_value_client.rb
143
+ - dryad-consul/lib/dryad/consul/railtie.rb
143
144
  - dryad-consul/lib/dryad/consul/service.rb
144
145
  - dryad-consul/lib/dryad/consul/service_client.rb
145
146
  - dryad-consul/lib/dryad/consul/service_registry.rb
@@ -163,7 +164,6 @@ files:
163
164
  - dryad-core/bin/setup
164
165
  - dryad-core/dryad-core.gemspec
165
166
  - dryad-core/lib/dryad.rb
166
- - dryad-core/lib/dryad/configuration.rb
167
167
  - dryad-core/lib/dryad/core.rb
168
168
  - dryad-core/lib/dryad/core/config_desc.rb
169
169
  - dryad-core/lib/dryad/core/config_provider.rb
@@ -180,11 +180,12 @@ files:
180
180
  - dryad-core/spec/dryad/core/service_instance_spec.rb
181
181
  - dryad-core/spec/dryad/core/service_spec.rb
182
182
  - dryad-core/spec/dryad/core_spec.rb
183
- - dryad-core/spec/dryad_spec.rb
184
183
  - dryad-core/spec/dummy/config/dryad.yml
185
184
  - dryad-core/spec/spec_helper.rb
186
185
  - dryad.gemspec
187
186
  - lib/dryad.rb
187
+ - lib/dryad/configuration.rb
188
+ - lib/dryad/railtie.rb
188
189
  - lib/dryad/version.rb
189
190
  homepage: https://github.com/jack0pan/dryad.rb
190
191
  licenses:
@@ -205,7 +206,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
206
  - !ruby/object:Gem::Version
206
207
  version: '0'
207
208
  requirements: []
208
- rubygems_version: 3.0.3
209
+ rubyforge_project:
210
+ rubygems_version: 2.7.9
209
211
  signing_key:
210
212
  specification_version: 4
211
213
  summary: Config Management & Service Registration and Discovery
@@ -1,21 +0,0 @@
1
- RSpec.describe Dryad do
2
- it "has a valid version number" do
3
- expect(Dryad::Core::VERSION).not_to be(nil)
4
- end
5
-
6
- it "can be configured with config file" do
7
- environment = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "default"
8
- default_consul_config = YAML.load(ERB.new(File.read(ENV['DRYAD_CONFIG_FILE'])).result)[environment]["consul"]
9
- expect(Dryad.configuration.consul[:host]).to eq(default_consul_config["host"])
10
- expect(Dryad.configuration.consul[:port]).to eq(default_consul_config["port"])
11
- end
12
-
13
- it "can be configured with block" do
14
- consul_config = { host: "block.consul.example", port: 8500 }
15
- Dryad.configure do |config|
16
- config.consul = consul_config
17
- end
18
-
19
- expect(Dryad.configuration.consul).to eq(consul_config)
20
- end
21
- end
File without changes