- Fix: Restore previous parser behavior of returning existing variables by @bkeepers in #519
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.1.5...v3.1.6
- Optimize parser by removing repeated hash merges by @andrewts129 in #515
- Refactor parser to avoid duplicate scan/gsub by @bkeepers in #517
- Fix typo in README by @JohnYangSam in #516
- @JohnYangSam made their first contribution in #516
- @andrewts129 made their first contribution in #515
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.1.4...v3.1.5
- Fix an error when only the
Spring::Client
is loaded by @alpaca-tc in #512
- @alpaca-tc made their first contribution in #512
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.1.3...v3.1.4
- Only use Spring if already loaded by @runephilosof-abtion in #511
- Doc Updates:
- cleanup: Run standard:fix by @olleolleolle in #509
- @mikegee made their first contribution in #505
- @mark-young-atg made their first contribution in #506
- @olleolleolle made their first contribution in #508
- @runephilosof-abtion made their first contribution in #511
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.1.2...v3.1.3
- Fix: "can't modify frozen Hash" when stubbing ENV by @bkeepers in #504
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.1.1...v3.1.2
What's Changed
- Require version file so VERSION is available by @javierjulio in #495
- Fix template (-t) handling of multi-line variables by @maxjacobson in #502
- Guard against restore being called with no previously saved state by @bkeepers in #503
New Contributors
- @javierjulio made their first contribution in #495
- @maxjacobson made their first contribution in #502
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.1.0...v3.1.1
What's Changed
- Fix regression with semantic-logger, allow setting custom logger by @bkeepers in #494
# config/application.rb # Set a custom dotenv logger Dotenv::Rails.logger = MyCustomLogger.new module YourApp class Application < Rails::Application # … end end
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.0.3...v3.1.0
What's Changed
- Solve circular require warning by @martijnbolhuis in #491
- Use tagged logger already configured on Rails by @kriansa in #489
- Fix exception on startup for Rails 7.1.0 by @bkeepers and @zspencer in #492
New Contributors
- @zspencer made their first contribution in #492
- @martijnbolhuis made their first contribution in #491
- @kriansa made their first contribution in #489
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.0.2...v3.0.3
- Fix: Restore ability to mutate Dotenv::Rails.files by @bkeepers in #486
What's Changed
- Disable autorestore if using climate_control or ice_age by @bkeepers in #483
- Join files to Rails.root at load time by @bkeepers in #484
- Manually check optional Rails dependency version by @bkeepers in #481
Full Changelog: https://github.com/bkeepers/dotenv/compare/v3.0.0...v3.0.1
Breaking Changes
- Ruby >= 3.0 and Rails >= 6.1 are now required. Lock dotenv to
~> 2.0
if you are using an outdated Ruby or Rails version. #466, #471 \n
is no longer expanded into a newline in quoted strings. Use multi-line strings with real line breaks, or setDOTENV_LINEBREAK_MODE=legacy
to preserve the old behavior. @nitsujri #423ENV
will be automatically restored between tests (ActiveSupport::TestCase
andRspec
). #472, #475- Fixed precedence when using
Dotenv::Rails.overload
. So now.env.development.local
will overwrite.env.local
, which will overwrite.env.development
, which will overwrite.env
. @eriklovmo - #460 - The instrumentation event
dotenv.load
has been renamed toload.dotenv
to properly make use of namespaces in ActiveSupport::Notifications #473
Other improvements
- All changes to ENV will be logged in Rails apps. #473
- Fixed an issue where
rake
loaded development files (.env*development
) for test-related tasks. #470 - Add
-i
/--ignore
option todotenv
CLI to optionally ignore missing files. @stevenharman #463 - You can customize which files get loaded by setting
Dotenv::Rails.files
. #468
Deprecations
- The
dotenv-rails
gem is now superfluous. It's not technically deprecated yet and will continue to work, but thedotenv
gem does the same thing. #468 Dotenv::Railtie
has been deprecated. UseDotenv::Rails
. #468Dotenv.overload
has been replaced withoverwrite
.overload
will still work and is not technically deprecated, but documentation refers toDotenv.overwrite
now. #469
New Contributors
- @stevenharman made their first contribution in #463
- @eriklovmo made their first contribution in #460
- @nitsujri made their first contribution in #423
Full Changelog: https://github.com/bkeepers/dotenv/compare/v2.8.1...v3.0.0
- Restore support for EOL'd Ruby versions (2.5, 2.6) (#458)[#458]
- Drop support for Ruby 2.4, 2.5, and 2.6, which are EOL
- Fix template (-t) handling of export declarations #416
- Unescape escaped characters when value is not quoted #421
- Add overload option for the CLI (
$ dotenv --overload -f .env.local
) #445
- Add a Dotenv::Railtie.overload method #403
- Support for more Rails versions #404
- Fix template handling of blank lines and comments #413
- Fix for dotenv-rails Rake task environment allocation#405
- Fix
NoMethodError
in non-Rails environments #394
- Fix for parallel spec tasks initializing in development #384
- Test against updated rubies #383, #387
- Conditional branch cleanup for clarity of intent #385
- Fix for load order issue with Railties #391
- NEW: dotenv-templates using the -t flag #377, #393
- Cleaned up CLI while resolving regressions in 2.7.1 #382
- Fixes regression with CLI experience (#376)
- Add Dotenv.parse method (#362)
- Add Support for Rails 6.0 (#370)
- Improve dotenv CLI output (#374)
- Add GitHub Actions automation (#369)
- Test against Ruby 2.6 (#372)
- Added require keys method to raise if not defined (#354)
- Use latest Ruby version on CI (#356, #363)
- Clarify variable hierarchy in README.md (#358)
- Use SVG Travis CI badge (#360)
This release re-introduces multiline values with proper protections against the regressions that were reported in 2.3.0, and corrects a breaking change in the API from 2.4 for Dotenv::Environment
.
This release reverts Parse multiline values
(#318, #329) due to a parsing regression that was discovered after the last release (#336, #339, #341).
- Skip over lines that don't set an envvars (#291)
- Document the -f flag (#310)
- Existing variable takes precendence when performing substitution (#313)
- Parse multiline values (#318, #329)
- Fix load to respect existing environment variables over env file when doing variable interpolation (#323)
- Add gem version badge to README.md (#328)
- Rescue from bundler require error (#330)
- Support Rails 5.2 (#325)
- Support Rails 5.1 (#299)
- Drop official support for Ruby 1.9, jruby, and Rubinius. They may continue to work, but tests are not run against them. (#283)
- Allow leading and trailing whitespace (#276, #277)
- [dotenv-rails] Fix for rspec rake tasks initializing in development (#241)
- [dotenv-rails] Allow a local file per environment, e.g.
.env.development.local
(#281) - [dotenv-rails] No longer load
.env.local
in rails' test environment (#280)
- Fix parser to allow leading whitespace before variables (#276)
- [dotenv-rails] Fix bug with
require "dotenv/rails-now"
in older versions of rails (#269)
- Fix load error when using Spring w/ custom config (#246)
- Relax dependency on
railties
to allow Rails 5.0 apps. (#226) - Fix scenario where some escaped
$
would not be unescaped. (#222) - Gracefully handle files with UTF-8 BOM (#225)
- Support carriage returns in addition to newlines in .env (#194)
- Add runtime dependency on rails 4 for dotenv-rails (#189)
- Fix for expansion of escaped variables (#181)
-
.env.local
and.env.#{Rails.env}
will be automatically be loaded with thedotenv-rails
gem. -
Drop official support for Ruby 1.8.7 and REE. They may still continue to work, but will not be tested against. Lock to version "<= 1.1" if you are using Ruby 1.8.
-
dotenv-rails
now only supports Rails 4. Manually configure dotenv if you are using Rails 3. -
Support -f option to dotenv executable
dotenv -f /path/to/.env,/path/to/another/.env
-
Fix issue calling
Dotenv::Railtie.load
in Rails 4.1 before application is defined (#155)
-
Define
#load
onDotenv::Railtie
, which can be called to manually loaddotenv
before Rails has initialized. -
add
dotenv/rails-now
, which can be required in theGemfile
to immediately load dotenv.gem 'dotenv-rails', require: 'dotenv/rails-now' gem 'gem-that-requires-env-variables'
- Fix load error with Spring when running
rails server
(#140)
-
dotenv-rails is now loaded during the
before_configuration
callback, which is fired when theApplication
constant is defined (class Application < Rails::Application
). -
Remove deprecated features. Upgrade to 0.11.0 and fix deprecation warnings before upgrading to 1.0.0.
-
Watch .env for changes with Spring in Rails 4 (#118)
-
Fix deprecation warnings for
File.exists?
(#121) -
Use
Rails.root
to find.env
(#122) -
Avoid substitutions inside single quotes (#124)
- Depend on dotenv-deployment ~>0.0.2, which fixes issues with 0.0.1
- Extract dotenv-deployment gem. https://github.com/bkeepers/dotenv-deployment
-
Add support for executing interpolated commands. (Ruby >= 1.9 only)
HEAD_SHA=$(git rev-parse HEAD)
-
Add
dotenv_role
option in Capistrano.set :dotenv_role, [:app, web]
-
Add
Dotenv.overload
to overwrite existing environment values.
-
Add support for variable expansion.
HOST="example.com" URL="http://${USER}@${HOST}" ESCAPED_VARIABLE="this is \$NOT replaced"
-
Allow setting variables without a value.
BLANK=
-
Add
dotenv
executable to load.env
for other scripts.$ dotenv ./script.py
-
Added a capistrano recipe to symlink in
.env
on deploy. -
Allow inline comments
VARIABLE=value # this is a comment
-
Raises Dotenv::FormatError when parsing fails
-
Remove deprectated autoloading. Upgrade to 0.6 first and fix any warnings.
-
Add Dotenv.load! which raises Errno::ENOENT if the file does not exist
-
Add dotenv-rails gem for autoloading in a Rails app
-
Deprecated autoloading with plain dotenv gem
-
Support for double quotes
A="some value" B="with \"escaped\" quotes" C="and newline\n expansion"
-
Support for pow-style variables prefixed with export
export VARIABLE="some value"
-
Load immediately on require in Rails instead of waiting for initialization
-
Add YAML-style variables
VARIABLE: some value
-
Add support for quoted options, e.g.:
VARIABLE='some value'
-
Fix rake deprecation warnings
- Avoid overriding existing ENV variables so values set before loading the app are maintained.