gpt4 book ai didi

heroku - 本地环境变量和 Heroku

转载 作者:行者123 更新时间:2023-12-03 21:39:20 26 4
gpt4 key购买 nike

我有一个 sinatra 应用程序,其中有一个 yml 文件来设置环境变量,我使用此方法调用它们

module MyConfig

def config
environment = ENV["RACK_ENV"] || "development"
YAML.load_file("./config/config.yml")[environment]
end
end

所以当我想使用一个变量时,我会这样做
aws_access_key_id = config['aws_access_key']

例如,我有一个 .gitignore 文件,它在推送到 github 时忽略了 config.yml。所以当我推送到 heroku 时,这些环境变量将无法访问?

所以这让我不得不使用 heroku 方式来设置它们
heroku config:add aws_access_key= myapikey

但是 heroku 访问这些
aws_access_key_id = ENV['aws_access_key']

如何将我的开发环境设置为使用方法配置,而 heroku 使用 ENV,我是否以错误的方式看待这个问题?还是我的配置方法为我做这个?

任何帮助表示赞赏

瑞克文件
  require 'active_support/core_ext'
require './config/config.rb'
require 'bundler/setup'
Bundler.require(:default)

include MyConfig

AssetSync.configure do |con|
con.fog_provider = 'AWS'
con.fog_region = 'eu-west-1'
con.fog_directory = config['fog_directory']
con.aws_access_key_id = config['aws_access_key']
con.aws_secret_access_key = config['aws_secret_key']
con.prefix = "assets"
con.public_path = Pathname("./public")
end

namespace :assets do
desc "Precompile assets"
task :precompile do
AssetSync.sync
end
end

最佳答案

更新:

我现在使用 dotenv gem 而不是下面的例子。所以不要忽略 env.rb文件,我现在忽略 .env用 Git 文件。

原帖:

尝试这个,

# /env.rb

ENV['aws_bucket'] = 'my_bucket'
ENV['aws_access_key'] = 'my_access_key'
ENV['aws_access_secret'] = 'my_access_secret'

此文件设置相同 ENV值为 heroku config会做。
# /config.rb

require './env' if File.exists?('env.rb')
env.rb只有存在时才会被要求。
# /.gitignore

/env.rb
env.rb已添加到 .gitignore文件,所以它不会保存在 Git 中。

然后您将使用 ENV['key'] 访问这些值。而不是 config['key'] .

您可能需要更改 env.rb 的路径如果它与 config.rb 不在同一目录中文件。

编辑:

从看着你的 Rakefile在上一个问题中,您需要将其更改为:
# Rakefile

require 'bundler/setup'
Bundler.require(:default)
require './env' if File.exists?('env.rb')

AssetSync.configure do |con|
con.fog_provider = 'AWS'
con.fog_region = 'eu-west-1'
con.fog_directory = ENV['aws_bucket']
con.aws_access_key_id = ENV['aws_access_key']
con.aws_secret_access_key = ENV['aws_access_secret']
con.prefix = "assets"
con.public_path = Pathname("./public")
end

namespace :assets do
desc "Precompile assets"
task :precompile do
AssetSync.sync
end
end

我假设 /config/config.rb 中的唯一方法是 config方法,所以我删除了,
require './config/config.rb'
include MyConfig

并交换了 config[key]ENV[key]env.rb 中定义的值.您可能需要更改 key要匹配的名称。

关于heroku - 本地环境变量和 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com