前提・実現したいこと
Rails APIモードにてActiveStorageにGCP画像を保存したいです。
いくつかサイトを参考にし実装しているのですが、2箇所避けられないエラーがあります。
- gem google-cloud-storage
を入れると
GemNotFound: Could not find public_suffix-4.0.6 in any of the sources
になり、立ち上がりません。(コメントアウトすると立ち上がります。)
なお、rubygemsで調べても、4.0.6は存在します
- なぜか立ち上がったのですが、別のエラーが出ました。以下
jsonファイルは、GCPにて鍵を作成し、そのままダウンロードしたものです。
全文載せると文字数制限に引っ掛かるため、前半部分のみ添付します。
{"status":500,"error":"Internal Server Error","exception":"#\u003cRuntimeError: The keyfile '/myapp/jsonファイル' is not a valid file.\u003e","traces":{"Application Trace":[{"exception_object_id":16200,"id":47,"trace":"app/controllers/events_controller.rb:26:in `create'"}]
該当のソースコード
controller
1class EventsController < ApplicationController 2 before_action :set_event, only: %i[show destroy update] 3 4 def create 5 event = Event.create 6 7 image_match = params[:image].match(/^data:(.*?);(?:.*?),(.*)$/) 8 mime_type, encoded_image = image_match.captures 9 extension = mime_type.split('/').second 10 decoded_image = Base64.decode64(encoded_image) 11 filename = "image#{event.id}.#{extension}" 12 image_path = "#{Rails.root}/tmp/storage/#{filename}" 13 File.open(image_path, 'wb') do |f| 14 f.write(decoded_image) 15 end 16 event.image.attach({ io: File.open(image_path), filename: filename, content_type: mime_type }) 17 18 if event.save 19 render json: event 20 else 21 render json: event.errors 22 end 23 end 24
google: service: GCS project: hoge credentials: <%= Rails.root.join("jsonのファイルディレクトリを置いてます") %> bucket: hoge
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。