Ruby on rails Gemfile中的环境变量

Ruby on rails Gemfile中的环境变量,ruby-on-rails,heroku,bundler,gemfile,Ruby On Rails,Heroku,Bundler,Gemfile,在Gemfile中使用环境变量时遇到问题。 我正在尝试使用API密钥从私有Github存储库加载gem: auth = ENV['SECRET_GIT'] gem 'foobar', git: "https://#{auth}:x-oauth-basic@github.com/Foo/Bar.git" 但是如果我放置我的ENV['SECRET\u GIT']变量,它里面什么都没有。 我认为你可以这样做,因为这些(特别是第一个): - - - 捆绑机版本1.14.6 ruby 2.4.0p0 谢

在Gemfile中使用环境变量时遇到问题。
我正在尝试使用API密钥从私有Github存储库加载gem:

auth = ENV['SECRET_GIT']
gem 'foobar', git: "https://#{auth}:x-oauth-basic@github.com/Foo/Bar.git"
但是如果我
放置
我的
ENV['SECRET\u GIT']
变量,它里面什么都没有。
我认为你可以这样做,因为这些(特别是第一个):
-
-
-

捆绑机版本1.14.6
ruby 2.4.0p0

谢谢你的帮助

编辑

我正试图在本地环境中这样做,我想在heroku上这样做不会有问题。

是的,您可以从控制台进行设置

heroku config:set SECRET_GIT=your-api-key
或者,您可以从heroku dashbord设置环境变量

heroku > your-app > settings > Config variables
并添加一个新条目

SECRET_GIT = your-api-key
现在您可以在
Gemfile

gem 'foobar', git: "https://#{ENV['SECRET_GIT']}:x-oauth-basic@github.com/Foo/Bar.git"

从您的评论中,我了解到您希望heroku配置在本地开发中可用。这不是你所认识到的情况

您需要要求您在GEM文件中提到的
heroku_env.rb
。Gemfile只是一个在特定上下文中执行的普通Ruby文件。因此,您应该能够将
require'config/heroku_env'
添加到顶部,或者添加任何路径。记住省略结尾处的
.rb



或者,尝试一下heroku local(heroku local)由于得到的回复,我想出了一个解决方案(尤其是)。
我原以为spring或其他什么东西会神奇地加载我的环境文件(因为没有为本地环境指定任何内容)

我将此代码放在我的GEM文件的开头

env = 'config/env.rb'
load(env) if File.exist?(env)

我认为问题在于将
auth
作为变量?在您提供的链接中,没有一个这样使用它,它们在同一行中写入,如
gem'foobar',git:“https://{ENV['SECRET_git']}:x-oauth-basic@github.com/Foo/Bar.git“
。我也尝试过这种方法,但它也不起作用。好的。我只是好奇,我们能在文件中有变量吗?我找不到这方面的参考资料。你能提供一些链接吗?如果你提供了
foo='bar'
,那么
会把foo=>bar'
放在你的
gemfile
中,效果很好;)您是否事先执行了导出机密\u GIT=“xxxxx”,或者如何在shell中指定该env变量?如果您已经这样做了,并且您正在使用rails和spring,请尝试先停止spring服务器。感谢您的回答,我编辑了我的帖子,使之更准确:我正在尝试在本地环境中这样做。我有一个
heroku_env.rb
文件,用来模拟heroku的环境变量(它被加载到我的
application.rb
)。也许这不是正确的方法…啊,我没有用这种方式使用环境变量如果你只想使用
env['SECRET\u GIT']
你可以像
SECRET\u GIT=your api bundle install
那样使用它,问题是我使用的是与我的队友共享的
heroku\u env.rb
文件(我想他们不会乐意每次都运行这个命令行而不是
bundle
)(是的,我知道痛苦;)谢谢你指出这一点。我想我正在寻找你提到的东西(
require'config/heroku_env'
),但它不是那样工作的。Heroku local对于一个变量来说似乎有点“矫枉过正”。有没有办法使用Figaro在application.yml文件中实现这一点?