raindeer 0.1.1 → 0.1.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
  SHA256:
3
- metadata.gz: e75c9fc6090058055514d77cf30350528e2b961dd2d92088ab7407e893c5543a
4
- data.tar.gz: e548dccf176c3768d42598ce1889694de5ed7919beb3e2b19bfed8112db80927
3
+ metadata.gz: 8ff951a5eafc6d661e188c1eb78fb01ae2a148544fd897da8731800305335f2f
4
+ data.tar.gz: d821af08d8333a88da073564db2f699e905de22fa825ed89ac41dca5dd48fd4b
5
5
  SHA512:
6
- metadata.gz: 7102994614563cb59203e8e711bd1210d95f5d28441f15eee224fedefbdeaab5939ce395974550161a40ec74d090a9b2cbb9e2b055da3025a450d99e978759e1
7
- data.tar.gz: f4742896c7497449528bbf4e6373ac8729473c82936f700dd533efbf8afb12762daad5c636e114a3da32c98e844acb3a56d9cb357b71cf8203dbf51edb920afb
6
+ metadata.gz: 6c8cc7383ae033d78736e5c7db85057f4a2ab4bbd8b5634d4efc7164b96112dd25ac94e31216f9cbe2ab06a99fa70f1b34a9f742da6725ff3f0fe7295b99f0f2
7
+ data.tar.gz: 52bd7181b0e4bb0a9a4cf17a0802428849a1a0e5543f1443721661c58c229f528e6e49fc0f97866a5092d2e42772a2ca26cbdd67d61da7b5bca50857ade3bd0c
data/lib/boot.rb CHANGED
@@ -1,24 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'low_dependency'
4
3
  require 'low_loop'
4
+ require 'low_dependency'
5
5
 
6
- require_relative 'router/router'
6
+ require_relative 'support/config_loader'
7
7
 
8
- host = ENV.fetch('RAIN_HOST', '127.0.0.1').freeze
9
- port = ENV.fetch('RAIN_PORT', 4133)
10
- matrix_mode = ENV.fetch('RAIN_MATRIX', nil) == '1'
11
- mirror_mode = ENV.fetch('RAIN_MIRROR', nil) == '1'
8
+ env = {
9
+ host: ENV.fetch('RAIN_HOST', nil),
10
+ port: ENV.fetch('RAIN_PORT', nil),
11
+ web_root: ENV.fetch('RAIN_WEB_ROOT', nil),
12
+ matrix_mode: Rain::ConfigLoader.parse_boolean(ENV.fetch('RAIN_MATRIX', nil)),
13
+ mirror_mode: Rain::ConfigLoader.parse_boolean(ENV.fetch('RAIN_MIRROR', nil))
14
+ }
12
15
 
13
- config = Struct.new(:host, :port, :matrix_mode, :mirror_mode)
16
+ config = Rain::ConfigLoader.load('./config/config.yaml', env)
14
17
 
15
18
  LowDependency.provide('rain.router') do
16
19
  RainRouter.new
17
20
  end
18
21
 
19
22
  LowDependency.provide('low.loop') do
20
- # TODO: Use "def method(dependency: Dependency)" in low loop's constructor when this feature is ready.
21
- LowLoop.new(config: config.new(host, port, matrix_mode, mirror_mode), router: Low::Providers['rain.router'])
23
+ LowLoop.new(config:, router: Low::Providers['rain.router'])
22
24
  end
23
25
 
24
26
  require_relative 'system/system'
data/lib/router/router.rb CHANGED
@@ -59,7 +59,7 @@ module Rain
59
59
  end
60
60
 
61
61
  if response_event.nil?
62
- status = LowType::Status[404]
62
+ status = Low::Types::Status[404]
63
63
  response_event = trigger status, action: :render, event: Low::Events::StatusEvent.new(status:, request: event.request)
64
64
  end
65
65
 
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
4
+ require 'yaml'
5
+
6
+ module Rain
7
+ class ConfigLoader
8
+ class << self
9
+ def load(filepath, env = {})
10
+ config_file = YAML.safe_load_file(filepath, symbolize_names: true)
11
+
12
+ # Environment variables override config file.
13
+ config_data = config_file.merge(env) do |_key, old_value, new_value|
14
+ new_value.nil? ? old_value : new_value
15
+ end
16
+
17
+ OpenStruct.new(config_data)
18
+ end
19
+
20
+ def parse_boolean(value)
21
+ return true if value == '1'
22
+ return false if value == '0'
23
+
24
+ nil
25
+ end
26
+ end
27
+ end
28
+ end
@@ -3,7 +3,7 @@
3
3
  class PageNotFoundNode < LowNode
4
4
  observe Status[404]
5
5
 
6
- def render(event: StatusEvent)
6
+ def render(event: StatusEvent) # rubocop:disable Lint/UnusedMethodArgument
7
7
  <<~HTML
8
8
  <div class="page-not-found">
9
9
  <em>404</em>
@@ -5,7 +5,7 @@ require_relative 'page_not_found_node'
5
5
  class SystemNode < LowNode
6
6
  observe '/system'
7
7
 
8
- def render(event: RouteEvent)
8
+ def render(event: RouteEvent) # rubocop:disable Lint/UnusedMethodArgument
9
9
  'SYSTEM!'
10
10
  end
11
11
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Raindeer
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raindeer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi
@@ -9,6 +9,20 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: ostruct
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: low_dependency
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -149,6 +163,7 @@ files:
149
163
  - lib/router/router.rb
150
164
  - lib/router/trie.rb
151
165
  - lib/router/trie_node.rb
166
+ - lib/support/config_loader.rb
152
167
  - lib/system/page_not_found_node.rb
153
168
  - lib/system/system.rb
154
169
  - lib/system/system_node.rb