*ローカル環境では正しく接続できている前提です
ローカルで動いてもherokuで動かない
ローカル環境では正常に接続できていてもherokuにデプロイすると
Neither PUB key nor PRIV key: nested asn1 error
が発生する
エラー時のstorage.yml
storage.yml
google:
service: GCS
credentials:
type: "service_account"
project_id: ""
private_key_id: "<%= Rails.application.credentials.private_key_id %>"
private_key: "<%= Rails.application.credentials.private_key %>"
client_email: ""
client_id: ""
auth_uri: ""
token_uri: ""
auth_provider_x509_cert_url: ""
client_x509_cert_url: ""
project: "My First Project"
bucket: "hogehuga"
credentialsを利用して秘密鍵を渡していた
herokuでコンソールを叩いても正常に読み込めている
heroku側で改行がうまくいかないという情報もあったので
private_key: "<%= Rails.application.credentials.private_key.gsub("\\n", "\n") %>"
に変更したが、同様のエラーが発生した
解決策 直接渡す
storage.ymlを
private_key_id: "<%= ENV['PRIVATE_KEY_ID'] %>"
private_key: "<%= ENV['PRIVATE_KEY'] %>"
heroku config:set
でherokuの環境変数に直接秘密鍵をそのまま挿入
これで正常に接続でき、画像の保存と読み込みが行えます
結論
credentials から値を持ってくるときにheroku側で何らかの想定しない処理が行われてしまっていると思われる
解決はしましたが、詳しい原因が分かっておりません
詳細がわかる方いましたらコメント頂けると幸いです