Так что я пытаюсь настроить загрузку файлов в моей рабочей среде. В настоящее время я использую 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 ключ.
Вся помощь и совет будут очень признательны. Спасибо!
Вы нажали после 'heroku config: set'? – Aleksey
@Aleksey да, я пробовал после 'heroku config: set', и я все еще получаю те же ошибки. – angkiki
Возможно, вы можете попробовать «Fog :: Storage :: Google» вместо «Fog :: Storage» – Aleksey