appydays 0.3.1 → 0.5.0

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
  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