高木のブログ

【Ruby】bundler/inline で dotenv が動作しない(しなくなった)

2023/07/03

問題

いつも書いている書き方で dotenv が動作しなくなった

.env
EXAMPLE=test
app.rb
require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'dotenv', require: 'dotenv/load'
end

p ENV['EXAMPLE']
$ ruby app.rb
nil

nil が返ってくる

バージョンは以下

$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin20]

$ bundler -v
Bundler version 2.4.13

暫定対応

gemfile のブロック外で require してあげたら動く

app.rb
require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'dotenv'
end

require 'dotenv/load'

p ENV['EXAMPLE']
$ ruby app.rb
"test"

原因

ちゃんと深くは追ってはいないが、この PR でおかしくなってしまったっぽい?

https://github.com/rubygems/rubygems/pull/6306

参考

bundler/inline resets ENV · Issue #6651 · rubygems/rubygems


SNS でシェアする


ytkg

Written by ytkg, Twitter, GitHub