繁体   English   中英

在引导文件中加载环境变量

[英]Load environment variable in boot file

我在 boot.rb 中加载环境变量时遇到问题。 我尝试了 2 个宝石 dotenv 和 dotenv-rails,但没有一个对我有用。 其他地方我可以使用环境变量,但不能在 boot.rb 中使用。 任何人都对这个有任何线索

if ["development"].include?(ENV['RAILS_ENV'])
   require 'bootsnap/setup'
   
   Bootsnap.setup(
    cache_dir:            'tmp/cache',          # Path to your cache
    development_mode:     'development', # Current working environment, e.g. RACK_ENV, RAILS_ENV, etc
    load_path_cache:      true,                 # Optimize the LOAD_PATH with a cache
    autoload_paths_cache: true,                 # Optimize ActiveSupport autoloads with cache
    compile_cache_iseq:   true,                 # Compile Ruby code into ISeq cache, breaks coverage reporting.
    compile_cache_yaml:   true                  # Compile YAML into a cache
  )
end

DotEnv 只会在 Gem 加载后将您的.env文件加载到 env 中。

在 Rails 中,这是由config/application.rb Bundler.require(*Rails.groups)行完成的。 如果您需要在此之前访问环境变量,则需要手动调用Dotenv::Railtie.load

Bundler.require(*Rails.groups)
Dotenv::Railtie.load

或者至少这就是自述文件会让您相信的内容 我想你可以使用普通的 ruby​​ 方法而不是 Railtie:

require 'dotenv'
Dotenv.load 

但是有很多选项可以从一个文件中设置 ENV 变量,比如direnv ,它不是一个 Ruby gem 并且钩到你的 shell 本身。

在测试环境变量之前,您可以使用 - 根据您的需要 - loadrequire显式处理您的.env文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM