質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1374閲覧

Rails ActiveStorage `not a valid file` GCP

ruizu

総合スコア35

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/01/17 12:47

編集2021/01/18 12:20

前提・実現したいこと

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/ツールのバージョンなど)

参考サイト

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

gemのインストールしなおし、及びファイルパスを絶対、相対参照に切り替えるうちに正常に動くようになりました。あまり、理想的な解決ではないと思います。

bundle install

投稿2021/01/20 14:40

ruizu

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問