2016-09-26 18 views
0

プロダクション環境でファイルのアップロードを設定しようとしています。私は現在、Fog-Googleと一緒にCarrierWaveを使用しています。 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シークレットIDとそのすべてを設定するのは比較的新しいものです。だから代わりに、私はちょうど私が知っていることと私はすべてが正しく行われたことを確認するために何をしたのかと言うでしょう。

私は現在、Cloud9 IDEを使用していますように、私の.bashrcファイルに私は私の/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 

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

を持っており、私の/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"] 
) 

のように私を述べました実際にはこれらのすべてに新しいですので、私はベストを尽くしましたFogとCarrierWaveのgithubページの両方のドキュメントに従ってください。

私の知る限り、.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' 
) 

をそして今、私は私が手にエラーが代わりに

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

ちょうど共有することであるHerokuのにプッシュしようとしたとき、私は ~ディレクトリの下 .fogフォルダを作成しました。 .fogフォルダ内で私はPrivate JSONキーに追加しました。

すべての助力とアドバイスをいただければ幸いです。ありがとうございました!

+0

'heroku config:set'の後にプッシュしましたか? – Aleksey

+0

@Alekseyはい私は 'heroku config:set'の後に試しました。私はまだ同じエラーを受けています。 – angkiki

+0

'Fog :: Storage'の代わりに' Fog :: Storage :: Google'を試してみてください – Aleksey

答えて

0

私は問題を解決し、正常に私のコードをHerokuにプッシュすることができました。

をSO 2つの主なエラーが発生した[親切に、これはそれが生産に完全に機能を意味するものではありません、それはちょうど私が今エラーなしHerokuのにプッシュすることができる午前意味することに注意してください]。

1)自分のアプリケーションに私の秘密鍵のJSONファイルを含めない。最初の問題を解決するためにconfig/initializers/fog.rbファイル

2)エラー、私は私のアプリで.fogフォルダを作成し、Googleのクラウドプラットフォームからだった私のプライベートキーJSONファイルに追加しました。

次の私はにconfig/initializers/fog.rbでコードを改正:私はして正常Herokuのに私のコードをプッシュすることができた

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'] 
) 

関連する問題