appydays 0.3.1 → 0.5.0

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: 03b299f65c7ee3543f139a2e705e1847144d49955dcab5fbe5c37a76fc9bb63a
4
- data.tar.gz: 17179300f27c0f293a9ba7e1d106e87050c4ce1b73a99b69be572d51c07f982d
3
+ metadata.gz: ab72febd501e6dada1c4738598be500f24b98ab57183a8674e93e6622a82aaf4
4
+ data.tar.gz: c906e8cc5af47912035269aada22d832dfcb338079ac210207c2cfa26ac3bc64
5
5
  SHA512:
6
- metadata.gz: 35fa1b0bc6933d9b76d509e0321e36a1281983694aa0f0362d17420ec7cab8878daf9e4676312948e70db58bc976d2c166f5e7b6191b7f1b357fffb41f763ede
7
- data.tar.gz: b1efd166a9f7d28bc3c3a1bb4bcaa6703cb4fa2a1ae983aa57675c100a786354975ed8ee38a67b8a27f1374c068dd2ec08176d46e525f900b99e94d3e089bf1f
6
+ metadata.gz: 65b183daf0a109fe1dc95f06a4bb1e842489541fd1fab7ec1c2794766a664334dd53e8b7adb8da5a80446fffe46bad7ff41c8e6076465d4fea05182c0956906b
7
+ data.tar.gz: 4608508c05777a02fa77983b9d91cb597e4f995cd1b78af7ea363a301d91ec31245357f97610f658e25a577d9a96778a6fd5b798af3f62ef9a81cd6a8a450187
@@ -86,6 +86,8 @@ module Appydays::Configurable
86
86
  # If convert is passed, that is used as the converter so the default value can be any type.
87
87
  # key: The key to lookup the config value from the environment.
88
88
  # If nil, use an auto-generated combo of the configuration key and method name.
89
+ # If key is an array, look up each (string) value as a key.
90
+ # The first non-nil (ie, `ENV.fetch(x, nil)`) value will be used.
89
91
  # convert: If provided, call it with the string value so it can be parsed.
90
92
  # For example, you can parse a string JSON value here.
91
93
  # Convert will not be called with the default value.
@@ -106,7 +108,8 @@ module Appydays::Configurable
106
108
  end
107
109
 
108
110
  key ||= "#{@group_key}_#{name}".upcase
109
- env_value = ENV.fetch(key, nil)
111
+ keys = Array(key)
112
+ env_value = keys.filter_map { |k| ENV.fetch(k, nil) }.first
110
113
  converter = self._converter(default, convert)
111
114
  value = env_value.nil? ? default : converter[env_value]
112
115
  value = installer._set_value(name, value, side_effect)
@@ -9,8 +9,17 @@ require "appydays/version"
9
9
  # (by convention, .env.<env>.local, .env.<env>, and .env).
10
10
  #
11
11
  # It can be called multiple times for the same environment.
12
+ # There are a couple special cases for RACK_ENV and PORT variables:
12
13
  #
13
- # NOTE: Foreman assigns the $PORT environment variable BEFORE we load config
14
+ # RACK_ENV variable: Dotenviable defaults the $RACK_ENV variable to whatever
15
+ # is used for dotfile loading (ie, the `rack_env` or `default_rack_env` value).
16
+ # This avoids the surprising behavior where a caller does not have RACK_ENV set,
17
+ # they call +Dotenviable.load+, and RACK_ENV is still not set,
18
+ # though it had some implied usage within this method.
19
+ # If for some reason you do not want +ENV['RACK_ENV']+ to be set,
20
+ # you can store its value before calling `load` and set it back after.
21
+ #
22
+ # PORT variable: Foreman assigns the $PORT environment variable BEFORE we load config
14
23
  # (get to what is defined in worker, like puma.rb), so even if we have it in the .env files,
15
24
  # it won't get used, because .env files don't stomp what is already in the environment
16
25
  # (we don't want to use `overload`).
@@ -26,5 +35,6 @@ module Appydays::Dotenviable
26
35
  ]
27
36
  Dotenv.load(*paths)
28
37
  env["PORT"] ||= original_port
38
+ env["RACK_ENV"] ||= rack_env
29
39
  end
30
40
  end
@@ -5,8 +5,9 @@ require "sequel/database/logging"
5
5
 
6
6
  class Sequel::Database
7
7
  def log_exception(exception, message)
8
+ level = message.match?(/^SELECT NULL AS "?nil"? FROM .* LIMIT 1$/i) ? :debug : :error
8
9
  log_each(
9
- :error,
10
+ level,
10
11
  proc { "#{exception.class}: #{exception.message.strip if exception.message}: #{message}" },
11
12
  proc { ["sequel_exception", {sequel_message: message}, exception] },
12
13
  )
@@ -19,6 +19,8 @@ module Appydays::SpecHelpers
19
19
  #
20
20
 
21
21
  class HaveALineMatching
22
+ include RSpec::Matchers::Composable
23
+
22
24
  def initialize(regexp)
23
25
  @regexp = regexp
24
26
  end
@@ -56,6 +58,8 @@ module Appydays::SpecHelpers
56
58
  end
57
59
 
58
60
  class MatchTime
61
+ include RSpec::Matchers::Composable
62
+
59
63
  def initialize(expected)
60
64
  @expected = expected
61
65
  if expected == :now
@@ -70,6 +74,7 @@ module Appydays::SpecHelpers
70
74
  def time(s)
71
75
  return nil if s.nil?
72
76
  return Time.parse(s) if s.is_a?(String)
77
+ return Time.at(s) if s.is_a?(Numeric)
73
78
  return s.to_time
74
79
  end
75
80
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Appydays
4
- VERSION = "0.3.1"
4
+ VERSION = "0.5.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appydays
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic Tech
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-03 00:00:00.000000000 Z
11
+ date: 2022-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv