【问题标题】:Automatically load Dotenv on my ruby console在我的 ruby​​ 控制台上自动加载 Dotenv
【发布时间】:2021-04-14 13:13:49
【问题描述】:

我想在启动 ruby​​ 控制台时自动运行Dotenv.load('.env.development'),它可以来自bundle console,也可以来自irb。我使用的是 Sinatra,而不是 Rails,而且我不确定如何在控制台启动时运行一些命令。我更愿意在没有 bash 脚本的情况下执行此操作,而是使用工具的内部功能。如果有将 ruby​​ 代码放在 ruby​​ 控制台开头的地方,这将解决我的问题并允许将来的控制台自定义。

【问题讨论】:

    标签: ruby sinatra bundler irb


    【解决方案1】:

    您尝试遵循 gem 的文档(对不起我的无知,我对 sinatra 一无所知)?:

    Documentation dotenv

    安装gem:

    $ gem install dotenv
    

    默认情况下,load 会在当前工作目录中查找名为 .env 的文件。传入多个文件,它们将按顺序加载。为变量设置的第一个值将获胜。

    require 'dotenv'
    Dotenv.load('file1.env', 'file2.env')
    

    在你的情况下,我认为应该是:

    require 'dotenv'
    Dotenv.load('.env.development')
    

    在红宝石香草中我不知道是否可能,我认为是的。

    【讨论】:

    • 我不想在每次使用控制台时都输入Dotenv.load('.env.development')。我知道我可以手动这样做,问题是如何自动运行
    • 如果你使用的是 sinatra,我认为如果你有 sinatra 的控制台,你不需要再次加载 env,但是当你使用 irb 我认为这个设置不起作用。
    【解决方案2】:

    您可以在我们的项目目录中创建一个.irbrc 文件,该文件会在 IRB 会话启动时自动加载。并在该文件中添加类似这样的内容:

    begin
      require 'dotenv'
      Dotenv.load('.env.development')
    rescue => e
      puts "loading Dotenv failed. because: #{e.message}"
    end
    

    详细了解.irbrc file in the Ruby-Docs

    【讨论】:

    • 这看起来很有希望!会试一试
    • 它成功从~/.irbrc 读取,但似乎没有在文件夹中寻找.irbrc。
    • 这令人惊讶,因为即使是 latest version of ruby 在他们的文档中也记录了这种行为。你真的只测试了.irbrc 文件吗?因为如果存在~/.irbrc 文件,则将不再读取.irbrc 文件。
    • 又试了一次,成功了,一定是我打错了。
    【解决方案3】:

    一种选择是创建一个 ./bin/console 脚本ala Bundler's gem

    我创建了这个 bin/console 文件作为临时解决方案,但我很好奇是否可以使用 irbrc 获得 @spickermann 的答案(我在此处合并)以使用同一目录 .irbrc

    #!/usr/bin/env ruby
    
    begin
      require 'dotenv'
      Dotenv.load('.env.development')
    rescue => e
      puts "loading Dotenv failed. because: #{e.message}"
    end
    
    require "irb"
    IRB.start(__FILE__)
    

    【讨论】:

      猜你喜欢
      • 2011-02-04
      • 2014-09-21
      • 2016-02-07
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多