在我的 ruby 控制台上自动加载 Dotenv

Automatically load Dotenv on my ruby console

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

你试试看gem的文档(抱歉我的无知,我对sinatra一无所知)?:

Documentation dotenv

安装 gem:

$ gem install dotenv

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

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

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

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

在 ruby vanilla 我不知道是否可能,我想是的。

您可以在我们的项目目录中创建一个 .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 的更多信息。

一个选择是创建一个 ./bin/console 脚本 .

我创建了这个 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__)