Нет, это невозможно.
Каждый dyno получает свою собственную эфемерную файловую систему со свежей копией самого последнего развернутого кода. В течение срока службы динамометрического стенда его запущенные процессы могут использовать файловую систему в качестве временного блокнота, но никакие записанные файлы не видны процессам в любом другом динамометрическом стенде, и любые записанные файлы будут удалены в момент остановки или перезапуска динамометрического стенда. Например, это происходит каждый раз при замене динамометра в связи с развертыванием приложения и примерно раз в день в рамках обычного управления динамометром.
- https://devcenter.heroku.com/articles/dynos#эфемернаяфайловаясистема
Или, по крайней мере, не без машины Руба Голдберга, такой как setupe, где вы настраиваете какую-то автоматизацию (например, хук после фиксации), чтобы объединить репо A и репо B и отправить результат в героку.
Также я считаю, что конфигурация приложения не должна присутствовать в переменных среды, поскольку ее утомительно поддерживать, а не поддерживать файл.
Heroku здесь не согласен.
Традиционный подход к обработке таких переменных конфигурации заключается в том, чтобы поместить их в исходный код — в какой-либо файл свойств. Это подверженный ошибкам процесс, который особенно сложен для приложений с открытым исходным кодом, которым часто приходится поддерживать отдельные (и частные) ветки с конфигурациями, специфичными для приложения.
Лучшее решение — использовать переменные среды и хранить ключи в открытом доступе. кода. На традиционном хосте или при работе локально вы можете установить переменные среды в файле bashrc. В Heroku вы используете переменные конфигурации. - https://devcenter.heroku.com/articles/config-vars
Хотя вы, возможно, переоцениваете то, что вам действительно нужно хранить в переменных ENV. Вам нужно только хранить секреты, такие как ключи API, в ENV.
Другая несекретная конфигурация, такая как ваши настройки для различных драгоценных камней, может и должна быть настроена в config/initializers
.
Если вы все еще думаете, что использование графического интерфейса — это ужасно, используйте файлы YAML, которые вы анализируете и используете для установки переменных ENV:
require 'yaml'
yaml = YAML.load_file(File.join(__dir__, 'conf.yml'))
def create_key(*components)
components.join('_').upcase
end
env_vars = yaml["production"].each_with_object({}) do |(key,value), memo|
key_components = [key]
if value.kind_of? Hash
value.each_pair do |k,v|
memo[create_key(*key_components.dup.push(k))] = v
end
else
memo[create_key(*key_components)] = value
end
end.each do |k,v|
system("heroku config:set #{k}=#{v}")
puts "Setting #{k} = #{v}; #{ $? }"
end
Или вы даже можете хранить сериализованную форму (JSON или YAML) в одной переменной окружения — хотя общий размер ограничен 32 КБ.
person
max
schedule
10.09.2017