2016-09-26 2 views
0

Так что я пытаюсь настроить загрузку файлов в моей рабочей среде. В настоящее время я использую CarrierWave вместе с Fog-Google. У меня нет проблем с хранением файлов локально, поскольку я не использую Fog для разработки. Однако в настоящее время я пытаюсь проверить загрузку файлов в процессе производства, но я не могу даже подтолкнуть свое приложение к Heroku.Fog-Google, не удалось нажать на Heroku

Вот фрагмент ошибки, которую я получаю при попытке нажать на Heroku.

[fog][WARNING] Unrecognized arguments: google_storage_secret_access_key_id, google_storage_secret_access_key 
rake aborted! 
ArgumentError: Invalid keyfile or passphrase 

Теперь я относительно новичок в создании секретных идентификаторов ENV и все такое. Поэтому вместо этого я просто скажу, что знаю, и что я сделал, чтобы быть уверенным, что все сделано правильно.

Итак, как я в настоящее время с помощью Cloud9 IDE, в моем .bashrc файле у меня есть

export GOOGLE_STORAGE_ACCESS_KEY_ID=XXXXX 
export GOOGLE_STORAGE_SECRET_ACCESS_KEY=XXXXX 
export GOOGLE_STORAGE_BUCKET_NAME=XXXXX 

В моей /config/initializers/carrierwave.rb

require 'carrierwave' 

CarrierWave.configure do |config| 
    config.fog_provider = 'fog/google'      # required 
    config.fog_credentials = { 
    provider:       'Google', 
    google_storage_access_key_id:  ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'], 
    google_storage_secret_access_key: ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY'] 
    } 
    config.fog_directory = ENV['GOOGLE_STORAGE_BUCKET_NAME'] 
end 

и в моем /config/initializers/fog.rb

GoogleStorage = Fog::Storage.new(
    provider: 'Google', 
    google_project: 'XXXX', 
    google_client_email: 'XXXXXX', 
    google_key_location: Rails.root.join('private','google-cloud-service-key.p12'), 
    google_storage_secret_access_key_id: ENV["GOOGLE_STORAGE_SECRET_ACCESS_KEY_ID"], 
    google_storage_secret_access_key: ENV["GOOGLE_STORAGE_SECRET_ACCESS_KEY"] 
) 

Как и упоминал, что я я действительно совершенно новый для всех из них, поэтому я пробовал свои лучшие в соответствии с документацией на странице gigub для Fog и CarrierWave.

Насколько я знаю, я должен использовать .bashrc для хранения моих секретных ключей и т. Д., А затем вызвать их с помощью метода ENV['SECRET_KEY_NAME']. Я установил файлы CarrierWave.rb и Fog.rb в папке инициализатора, поэтому я не совсем уверен, чего я тоже не хватает.

Кроме того, я также пробовал делать heroku config:set GOOGLE_STORAGE_SECRET_ACCESS_KEY_ID=XXXXXX, но это, похоже, не работает.

Я не совсем уверен, что делать сейчас и что может быть причиной ошибки при попытке нажать на Heroku, а тем более независимо от того, работает ли это даже на производстве.

EDIT:

Я думаю, что ошибка в основном из файла fog.rb. Поэтому я внесла в него поправки на следующее:

GoogleStorage = Fog::Storage::Google.new(
    google_project: 'XXX', 
    google_client_email: 'XXX', 
    google_json_key_location: '~/.fog/XXXX.json' 
) 

И теперь, когда я пытаюсь нажав на Heroku ошибки я получаю вместо этого

Errno::ENOENT: No such file or directory @ rb_sysopen - /app/.fog/XXX.json 

Просто поделиться, я создал папку .fog в каталоге ~. Внутри папки .fog я добавил в Private JSON ключ.

Вся помощь и совет будут очень признательны. Спасибо!

+0

Вы нажали после 'heroku config: set'? – Aleksey

+0

@Aleksey да, я пробовал после 'heroku config: set', и я все еще получаю те же ошибки. – angkiki

+0

Возможно, вы можете попробовать «Fog :: Storage :: Google» вместо «Fog :: Storage» – Aleksey

ответ

0

Итак, я решил проблему и успешно удалил свой код в Heroku.

[Пожалуйста, обратите внимание, что это не означает, что она функционирует прекрасно в производстве, это просто означает, что я сейчас нахожусь в состоянии нажать на Heroku без ошибок]

Так было 2 основные ошибки.

1) Не включая мой персональный файл JSON Key в моем приложении.

2) Ошибка в файле config/initializers/fog.rb

Чтобы решить первую проблему, я создал папку .fog в моей App и добавила приватный ключ JSON-файл, который был от Cloud Platform Google.

Далее я внес изменения в код в config/initializers/fog.rb на:

GoogleStorage = Fog::Storage::Google.new(
    :google_project => 'XXXX', 
    :google_client_email => 'XXXXX', 
    :google_json_key_location => Rails.root.join('.fog/XXXX'), 
    :google_storage_access_key_id => ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'], 
    :google_storage_secret_access_key => ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY'] 
) 

Я был тогда в состоянии успешно толкать свой код на Heroku.

Смежные вопросы