在ruby gem中设置环境变量

在ruby gem中设置环境变量,ruby,rubygems,environment-variables,env,Ruby,Rubygems,Environment Variables,Env,我正在制作一个简单的RubyGem(无Rails),它使用Mail gem从CLI发送电子邮件。为了配置邮件程序,我必须提供一个密码,我想将其秘密存储在一个ENV变量或其他东西中,这样它就不会公开 我尝试使用Dotenv,但发现在安装了新构建的gem之后,它只有在从项目目录运行它时才起作用。如果我尝试从主目录运行gem,ENV变量将不再可访问 在gempecspec.files中,我确保包含.env文件 我不认为我理解将变量加载到RubyGem中的实际过程 正确的行为取决于调用时的当前工作目录,

我正在制作一个简单的RubyGem(无Rails),它使用Mail gem从CLI发送电子邮件。为了配置邮件程序,我必须提供一个密码,我想将其秘密存储在一个ENV变量或其他东西中,这样它就不会公开

我尝试使用Dotenv,但发现在安装了新构建的gem之后,它只有在从项目目录运行它时才起作用。如果我尝试从主目录运行gem,ENV变量将不再可访问

在gempec
spec.files
中,我确保包含
.env
文件


我不认为我理解将变量加载到RubyGem中的实际过程

正确的行为取决于调用时的当前工作目录,这表明这是一个相对路径问题。由于它至少在某些时候起作用,因此您的
gempec
设置必须正确

我自己没有使用过
Dotenv
,但是通过查看源代码可以发现,通过
Dotenv.load
env
文件提供一个明确的路径是前进的方向

尝试使用
bin/myapp
中的
Dotenv.load(File.expand_path(“...env“,uuu File_uuu))
,或适应您的目录结构(假设
env
文件位于Gem根目录中)


类似的方法在中讨论。

正确的行为取决于调用时的当前工作目录这一事实表明这是一个相对路径问题。由于它至少在某些时候起作用,因此您的
gempec
设置必须正确

我自己没有使用过
Dotenv
,但是通过查看源代码可以发现,通过
Dotenv.load
env
文件提供一个明确的路径是前进的方向

尝试使用
bin/myapp
中的
Dotenv.load(File.expand_path(“...env“,uuu File_uuu))
,或适应您的目录结构(假设
env
文件位于Gem根目录中)


类似的方法在中进行了讨论。

Dotenv是一种用于将环境变量发送到不同执行环境(例如开发、登台、生产等)的工具,它并不真正用于gem中。这仅在项目目录中运行脚本时有效,因为Dotenv就是这样设计的


尝试改用
ENV
全局变量(仅从您的计算机加载环境变量),并指示用户自行设置环境,而不是在gem中使用
.ENV
文件。这应该允许在任何地方运行脚本,前提是没有其他问题。

Dotenv是一种用于将环境变量发送到不同执行环境(例如开发、登台、生产等)的工具,它实际上不适合在gem中使用。这仅在项目目录中运行脚本时有效,因为Dotenv就是这样设计的

尝试改用
ENV
全局变量(仅从您的计算机加载环境变量),并指示用户自行设置环境,而不是在gem中使用
.ENV
文件。这应该允许在任何地方运行脚本,假设没有其他问题