dotenv 3.1.0 → 3.1.4

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: 1dc708aad5fcaf487b064451b8f47d5b0e402a7c250385f234306ab3c77fcf20
4
- data.tar.gz: e939eca5e64f2aef9aeb784bd9765e20a3201057d4ed69c1ea46b1405625920e
3
+ metadata.gz: bbefe05cecd5a12cdd9a9dc72b3ff2feee883c10f84c40c9105d3d9c1c5ffc3c
4
+ data.tar.gz: a61066d9119426fa542acf6a17d7134033d17cef8bdf71fe87e964a5d4b5e925
5
5
  SHA512:
6
- metadata.gz: 3c7a9b929e7b419a1df9c07bd2dfa7959deea186bc6de9e0e8bdfdc671b7d4c183104715206ac956e81d4689b76d14907dd0a644eb995f4cd48437047e307ad1
7
- data.tar.gz: de3d64ad2bf4fbec40e7c253c71de40cf1cab82875293f168c73a5098e7419554362014e6eb0c6339d485c41c12cccad82e0f854fee30f7fef18e7cc4afc26ef
6
+ metadata.gz: 9941e0374f811e9048db77c77731106b1b3f75eff0358d6c2a8ef24265857ccfb02d76409f733f1f930815f4b032e5939520ee6c0a48d3eaa00d734be036eb4b
7
+ data.tar.gz: 83b856b11c9817f51151e4249a1fb5fd38b057720a049270ffa7fcf05a20547ce2db29e6690feb8f536478b0995549eaa52a90b5d1a019af5aa73ce6def3e561
data/README.md CHANGED
@@ -180,7 +180,7 @@ end
180
180
  Available options:
181
181
 
182
182
  * `Dotenv::Rails.files` - list of files to be loaded, in order of precedence.
183
- * `Dotenv::Rails.overwrite` - Overwrite exiting `ENV` variables with contents of `.env*` files
183
+ * `Dotenv::Rails.overwrite` - Overwrite existing `ENV` variables with contents of `.env*` files
184
184
  * `Dotenv::Rails.logger` - The logger to use for dotenv's logging. Defaults to `Rails.logger`
185
185
  * `Dotenv::Rails.autorestore` - Enable or disable [autorestore](#autorestore-in-tests)
186
186
 
@@ -276,7 +276,7 @@ You can use the `-t` or `--template` flag on the dotenv cli to create a template
276
276
  ```console
277
277
  $ dotenv -t .env
278
278
  ```
279
- A template will be created in your working directory named `{FINAME}.template`. So in the above example, it would create a `.env.template` file.
279
+ A template will be created in your working directory named `{FILENAME}.template`. So in the above example, it would create a `.env.template` file.
280
280
 
281
281
  The template will contain all the environment variables in your `.env` file but with their values set to the variable names.
282
282
 
data/lib/dotenv/diff.rb CHANGED
@@ -50,7 +50,10 @@ module Dotenv
50
50
  private
51
51
 
52
52
  def snapshot
53
- ENV.to_h.freeze
53
+ # `dup` should not be required here, but some people use `stub_const` to replace ENV with
54
+ # a `Hash`. This ensures that we get a frozen copy of that instead of freezing the original.
55
+ # https://github.com/bkeepers/dotenv/issues/482
56
+ ENV.to_h.dup.freeze
54
57
  end
55
58
  end
56
59
  end
data/lib/dotenv/rails.rb CHANGED
@@ -10,14 +10,11 @@ require "dotenv/log_subscriber"
10
10
  Dotenv.instrumenter = ActiveSupport::Notifications
11
11
 
12
12
  # Watch all loaded env files with Spring
13
- begin
14
- require "spring/commands"
15
- ActiveSupport::Notifications.subscribe("load.dotenv") do |*args|
13
+ ActiveSupport::Notifications.subscribe("load.dotenv") do |*args|
14
+ if defined?(Spring) && Spring.respond_to?(:watch)
16
15
  event = ActiveSupport::Notifications::Event.new(*args)
17
16
  Spring.watch event.payload[:env].filename if Rails.application
18
17
  end
19
- rescue LoadError, ArgumentError
20
- # Spring is not available
21
18
  end
22
19
 
23
20
  module Dotenv
@@ -26,7 +23,7 @@ module Dotenv
26
23
  delegate :files, :files=, :overwrite, :overwrite=, :autorestore, :autorestore=, :logger, to: "config.dotenv"
27
24
 
28
25
  def initialize
29
- super()
26
+ super
30
27
  config.dotenv = ActiveSupport::OrderedOptions.new.update(
31
28
  # Rails.logger is not available yet, so we'll save log messages and replay them when it is
32
29
  logger: Dotenv::ReplayLogger.new,
@@ -10,17 +10,35 @@ module Dotenv
10
10
  File.open(@env_file, "r") do |env_file|
11
11
  File.open("#{@env_file}.template", "w") do |env_template|
12
12
  env_file.each do |line|
13
- env_template.puts template_line(line)
13
+ if is_comment?(line)
14
+ env_template.puts line
15
+ elsif (var = var_defined?(line))
16
+ if line.match(EXPORT_COMMAND)
17
+ env_template.puts "export #{var}=#{var}"
18
+ else
19
+ env_template.puts "#{var}=#{var}"
20
+ end
21
+ elsif line_blank?(line)
22
+ env_template.puts
23
+ end
14
24
  end
15
25
  end
16
26
  end
17
27
  end
18
28
 
19
- def template_line(line)
20
- var, value = line.split("=")
21
- template = var.gsub(EXPORT_COMMAND, "")
22
- is_a_comment = var.strip[0].eql?("#")
23
- (value.nil? || is_a_comment) ? line : "#{var}=#{template}"
29
+ private
30
+
31
+ def is_comment?(line)
32
+ line.strip.start_with?("#")
33
+ end
34
+
35
+ def var_defined?(line)
36
+ match = Dotenv::Parser::LINE.match(line)
37
+ match && match[1]
38
+ end
39
+
40
+ def line_blank?(line)
41
+ line.strip.length.zero?
24
42
  end
25
43
  end
26
44
  end
@@ -1,3 +1,3 @@
1
1
  module Dotenv
2
- VERSION = "3.1.0".freeze
2
+ VERSION = "3.1.4".freeze
3
3
  end
data/lib/dotenv.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "dotenv/version"
1
2
  require "dotenv/parser"
2
3
  require "dotenv/environment"
3
4
  require "dotenv/missing_keys"
@@ -74,6 +75,9 @@ module Dotenv
74
75
  # @param env [Hash] Hash of keys and values to restore, defaults to the last saved state
75
76
  # @param safe [Boolean] Is it safe to modify `ENV`? Defaults to `true` in the main thread, otherwise raises an error.
76
77
  def restore(env = @diff&.a, safe: Thread.current == Thread.main)
78
+ # No previously saved or provided state to restore
79
+ return unless env
80
+
77
81
  diff = Dotenv::Diff.new(b: env)
78
82
  return unless diff.any?
79
83
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-27 00:00:00.000000000 Z
11
+ date: 2024-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -83,7 +83,8 @@ files:
83
83
  homepage: https://github.com/bkeepers/dotenv
84
84
  licenses:
85
85
  - MIT
86
- metadata: {}
86
+ metadata:
87
+ changelog_uri: https://github.com/bkeepers/dotenv/releases
87
88
  post_install_message:
88
89
  rdoc_options: []
89
90
  require_paths:
@@ -99,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
100
  - !ruby/object:Gem::Version
100
101
  version: '0'
101
102
  requirements: []
102
- rubygems_version: 3.5.3
103
+ rubygems_version: 3.5.16
103
104
  signing_key:
104
105
  specification_version: 4
105
106
  summary: Loads environment variables from `.env`.