我有一个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?我是否从错误的角度看待了这个问题?或者我的配置方法已经为我完成了这个任务?
感谢任何帮助。
RAKEFILE
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
YAML.load_file("./config/config.yml")[environment]
。由于您已经用env.rb
文件替换了 YAML 文件,因此不再需要包含它。 - Sam