Чтобы избежать передач в ключах доступа и секретного AWS доступа к файлу YML я использую следующее:Ошибки при кодировании доступа и секретного s3 на YAML файл
development:
bucket: development
access_key_id: <%= ENV["S3_KEY"] %>
secret_access_key: <%= ENV["S3_SECRET"] %>
, а затем при запуске я получаю ошибку
Could not log "sql.active_record" event. ArgumentError: invalid byte sequence in UTF-8
PG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0xe7 0xe3 0x6f
Если я пишу свой ключ доступа и секрет непосредственно на YML, как:
development:
bucket: development
access_key_id: MYACCESSKEY
secret_access_key: MYSECRETKEY
она проходит гладко.
Зачем возникает эта ошибка? Как я могу исправить это, не загружая свой ключ и секрет в файл yml?
Редактировать
Чтобы загрузить переменные среды на развитие, я использую решение объяснил here
# Load the app's custom environment variables here, so that they are loaded before environments/*.rb
app_environment_variables = File.join(Rails.root, 'config', 'app_environment_variables.rb')
load(app_environment_variables) if File.exists?(app_environment_variables)
Может ли это быть проблема с процессом загрузки?
Edit 2
В то же время, я пытался войти, что, кажется, на моей переменной S3_CONFIG, нагруженной:
конфигурации/Инициализаторы/load_config.rb
S3_CONFIG = YAML.load_file("#{::Rails.root}/config/s3.yml")[Rails.env]
Я получаю
S3 Config: {"bucket"=>"mybucket", "access_key_id"=>"<%= ENV[\"S3_KEY\"] %>", "secret_access_key"=>"<%= ENV[\"S3_SECRET\"] %>"}
Не так ли? должен был уже загрузить ключ среды? Может быть, это моя проблема?
ли вы на самом деле установить ENV [ "S3_KEY "] где-то в вашем приложении? – AdamT
да, я использую решение во втором ответе [this] (http://stackoverflow.com/questions/4911607/is-it-possible-to-set-env-variables-for-rails-development- окружающая среда в моем коде). – MrWater
Я добавил новую информацию к вопросу, чтобы сделать его более понятным – MrWater