[ruby] Google Firebase Storageの簡単な使い方
Spark プラン 無料枠 Storage
https://firebase.google.com/pricing
プロジェクトID
バケットID
複数のバケットは持てないので、ここに表示されるドメイン名がそれ(gs://
以下)
コードサンプル等
storage = Google::Cloud::Storage.new(project_id: ENV["FIREBASE_PROJECT_ID"])
bucket = storage.bucket ENV["FIREBASE_STORAGE_BUCKET_ID"]
bucket.create_file "/path/to/file" # バケットのルートに置く
bucket.create_file "/path/to/file", "folder/name/file" # バケットのサブフォルダに置く
# metadataを付けて置く(後で説明するpublic_urlで必要になる)
# tokenはぶつからない、推測されにくいものであれば何でも良さそう
require "active_support/all"
bucket.create_file "/path/to/file", metadata: { firebaseStorageDownloadTokens: SecureRandom.uuid }
files = bucket.files # 全部
# Signature: find_files(prefix:?, delimiter:?, token:?, max:?, versions:?)
# 例 a/b/c_d_e.jpg というファイルがあった場合、
# bucket.find_files prefix: "a/b/c_" で見つけられる path.start_with? 的な
files = bucket.find_files prefix: "folder/sub/prefix"
file = bucket.file("path/to/file") # 直接ファイル1つ
bucket.create_file "/path/to/file1", "folder/sub/file"
bucket.create_file "/path/to/file2", "folder/sub/file" # 同じところに同じ名前で置く
file.delete
file.signed_url # => デフォルトで5分間の公開が可能
file.signed_url expires: 1.hour.to_i # => 1時間の公開が可能、最大で7日間
X-Goog-Expires: The length of time the signed URL remained valid, measured in seconds from the value in X-Goog-Date. In this example the Signed URL expires in 15 minutes. The longest expiration value is 604800 seconds (7 days).
def public_url(file)
# more like permanent
URI(
"https://firebasestorage.googleapis.com/v0/b/#{CGI.escape file.bucket}/o/#{CGI.escape file.name}",
).tap do |uri|
uri.query = {
token: file.metadata["firebaseStorageDownloadTokens"],
alt: :media,
}.to_query
end
end
firebaseStorageDownloadTokens
がここで必要になるので、ファイルを置く時にmetadata
の指定が必要になる。
(javascriptからだとアップロードしたファイルのdownloadUrl
がメソッドとして提供されているが、rubyだとまだない?)
Author And Source
この問題について([ruby] Google Firebase Storageの簡単な使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/github0013@github/items/bdbba27695add9ea5509著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .