在ruby gem中设置环境变量



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

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

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

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

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

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

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

我自己还没有使用过Dotenv,但查看源代码表明,通过Dotenv.loadenv文件提供一个明确的路径是前进的方向。

尝试使用bin/myapp中的Dotenv.load(File.expand_path("../.env", __FILE__)),或者根据您的目录结构进行调整(假设env文件位于Gem根目录中)。

本教程中讨论了类似的方法。

相关内容

  • 没有找到相关文章

最新更新