7.1 ストレージ

ファイルの保存先を設定する

ActiveStorageのファイルの保存先は、Railsの環境ごとの設定ファイルで指定することができます。

以下の例では本番環境ではAmazon S3に、開発環境ではlocalに保存する設定をしています。

config/environments/development.rb

config.active_storage.service = :local

config/environments/production.rb

config.active_storage.service = :amazon

複数のストレージを同期する

Mirror Serviceという機能を使うことにより、複数のストレージサービスを同期させることができます。 以下は本番環境のストレージにミラーサービスを適応させた設定例になります。 S3にアップロードされた内容はAzureにも適応されます。

s3_west:
  service: S3
  access_key_id: ""
  secret_access_key: ""
  region: ""
  bucket: ""

azure:
  service: AzureStorage
  path: ""
  storage_account_name: ""
  storage_access_key: ""
  container: ""

production:
  service: Mirror
  primary: s3_east
  mirrors:
    - azure

独自の保存先を定義する

ActiveStorage::Serviceを継承し拡張することで、好きなプロバイダーをアップローダーのサービスとして利用することができます。

サービスへダイレクトアップロードする

ActiveStorageのJavaScriptのライブラリを利用することによってクライアントからクラウドストレージに直接ファイルをアップロードすることができます。

アセットパイプラインでactivestorageを読み込みます。

app/assets/javascripts/application.js

//= require activestorage

フォーム部分では以下のようなファイルフィールドを生成します。

<%= form.file_field :attachments, multiple: true, direct_upload: true %>

これらの設定でフロントから直接クラウドにアップロードされるようになります。

以下は利用できるイベントの一覧です。

イベント名 イベントの対象 データ 説明
direct-uploads:start フォーム 無し フォームが送信された時
direct-upload:initialize ファイルフィールド {id, file} ファイルにディスパッチされる時
direct-upload:before-blob-request ファイルフィールド> {id, file, xhr} アップロードメタデータを要求する直前の時
direct-upload:before-storage-request ファイルフィールド {id, file, xhr} ファイルを保存するリクエストを出す直前の時
direct-upload:progress ファイルフィールド {id, file, progress} ファイルを保存が進行中の時
direct-upload:error ファイルフィールド {id, file, error} エラーが発生した時
direct-upload:end ファイルフィールド {id, file} アップロードが終了した時
direct-uploads:end フォーム 無し すべてのアップロードが終了した。

results matching ""

    No results matching ""