mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add initial ActiveStorage integration
This commit is contained in:
parent
2f13b3c9fe
commit
986d6a6da4
6 changed files with 91 additions and 2 deletions
|
@ -1 +1,33 @@
|
|||
import * as Trix from "trix"
|
||||
import { DirectUpload } from "activestorage"
|
||||
|
||||
// FIXME: Hard coded routes
|
||||
const directUploadsURL = "/rails/active_storage/direct_uploads"
|
||||
const blobsURL = "/rails/active_storage/blobs"
|
||||
|
||||
addEventListener("trix-attachment-add", event => {
|
||||
const { attachment } = event
|
||||
if (!attachment.file) return
|
||||
|
||||
const delegate = {
|
||||
directUploadWillStoreFileWithXHR: (xhr) => {
|
||||
xhr.upload.addEventListener("progress", event => {
|
||||
const progress = event.loaded / event.total * 100
|
||||
attachment.setUploadProgress(progress)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const directUpload = new DirectUpload(attachment.file, directUploadsURL, delegate)
|
||||
|
||||
directUpload.create((error, attributes) => {
|
||||
if (error) {
|
||||
console.warn("Failed to store file for attachment", attachment, error)
|
||||
} else {
|
||||
console.log("Created blob for attachment", attributes, attachment)
|
||||
const { signed_id } = attributes
|
||||
const url = `${blobsURL}/${signed_id}/${encodeURIComponent(attachment.file.name)}`
|
||||
attachment.setAttributes({ url, signed_id })
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -14,7 +14,8 @@
|
|||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"trix": "^0.11.1"
|
||||
"trix": "^0.11.1",
|
||||
"activestorage": ">= 5.2.0-rc1"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
# This migration comes from active_storage (originally 20170806125915)
|
||||
class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :active_storage_blobs do |t|
|
||||
t.string :key, null: false
|
||||
t.string :filename, null: false
|
||||
t.string :content_type
|
||||
t.text :metadata
|
||||
t.bigint :byte_size, null: false
|
||||
t.string :checksum, null: false
|
||||
t.datetime :created_at, null: false
|
||||
|
||||
t.index [ :key ], unique: true
|
||||
end
|
||||
|
||||
create_table :active_storage_attachments do |t|
|
||||
t.string :name, null: false
|
||||
t.references :record, null: false, polymorphic: true, index: false
|
||||
t.references :blob, null: false
|
||||
|
||||
t.datetime :created_at, null: false
|
||||
|
||||
t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
|
||||
end
|
||||
end
|
||||
end
|
|
@ -10,7 +10,28 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2018_02_08_205311) do
|
||||
ActiveRecord::Schema.define(version: 2018_02_12_164506) do
|
||||
|
||||
create_table "active_storage_attachments", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "record_type", null: false
|
||||
t.integer "record_id", null: false
|
||||
t.integer "blob_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.index ["blob_id"], name: "index_active_storage_attachments_on_blob_id"
|
||||
t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true
|
||||
end
|
||||
|
||||
create_table "active_storage_blobs", force: :cascade do |t|
|
||||
t.string "key", null: false
|
||||
t.string "filename", null: false
|
||||
t.string "content_type"
|
||||
t.text "metadata"
|
||||
t.bigint "byte_size", null: false
|
||||
t.string "checksum", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true
|
||||
end
|
||||
|
||||
create_table "messages", force: :cascade do |t|
|
||||
t.string "subject"
|
||||
|
|
|
@ -56,9 +56,14 @@ acorn@^5.0.0:
|
|||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102"
|
||||
|
||||
"activestorage@>= 5.2.0-rc1":
|
||||
version "5.2.0-rc1"
|
||||
resolved "https://registry.yarnpkg.com/activestorage/-/activestorage-5.2.0-rc1.tgz#79898996eceb0f13575eff41fb109051fbfa49b0"
|
||||
|
||||
"activetext@file:../..":
|
||||
version "0.1"
|
||||
dependencies:
|
||||
activestorage ">= 5.2.0-rc1"
|
||||
trix "^0.11.1"
|
||||
|
||||
ajv-keywords@^2.1.0:
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"activestorage@>= 5.2.0-rc1":
|
||||
version "5.2.0-rc1"
|
||||
resolved "https://registry.yarnpkg.com/activestorage/-/activestorage-5.2.0-rc1.tgz#79898996eceb0f13575eff41fb109051fbfa49b0"
|
||||
|
||||
trix@^0.11.1:
|
||||
version "0.11.1"
|
||||
resolved "https://registry.yarnpkg.com/trix/-/trix-0.11.1.tgz#ffe54f2757c2c2385b8424fd5c5d2ab712a09acc"
|
||||
|
|
Loading…
Reference in a new issue