On Wednesday, 31 October 2018 11:13:27 UTC+1, belgoros wrote:
I tried to use dire upload way from Ember app to Rails API and used ember-active-storage add-on. Rails responds with the following error when I tried to attach a file:Cannot POST /rails/active_storage/direct_uploads 404 - Resource was not found.All Rails controller are protected with before_action filter defined in ApplicationController:
class ApplicationController < ActionController::API
before_action :authorize_request
attr_reader :current_user
private
def authorize_request
@current_user = (AuthorizeApiRequest.new(request .headers).call)[:user]
end
endI inspected the headers used when posting the request, - it seems to be OK and contains Authorization:Authorization:Bearer eyJhbG.....
and the request payload:
- blob: {filename: "Screenshot 2018-10-31 at 10.45.21.png", content_type: "image/png", byte_size: 110466,…}
- byte_size: 110466
- checksum: "L+1wS2rPR7cKkXP/Rb/
rig==" - content_type: "image/png"
- filename: "Screenshot 2018-10-31 at 10.45.21.png"
What's wrong with that ? Thank you.
- I created DirectUploadsController by extending it from ActiveStorage::DirectUploadsController as follows:
class DirectUploadsController < ActiveStorage::DirectUploadsController
protect_from_forgery with: :exception
skip_before_action :verify_authenticity_token
end
Rails.application.routes.draw do
resources :posts
post '/rails/active_storage/direct_uploads' => 'direct_uploads#create'
end
class PostSerializer < ActiveModel::Serializer
include Rails.application.routes.url_helpers
attributes :id, :title, :body, :tag_ids, :archived, :photo
def photo
url_for(object.photo) if object.photo.attached?
end
end
class Post < ApplicationRecord
serialize :tag_ids, Array
validates :title, :body, :tag_ids, presence: true
has_one_attached :photo
end
def create
@post = Post.new(post_params)
if @post.save
render json: @post, status: :created, location: @post
else
respond_with_errors @post
end
end
def post_params
ActiveModelSerializers::Deserialization.jsonapi_parse!(params,
only: [:title, :body, :tag_ids, :archived, :photo])
end
But when posting a new Post data, there are still errors:
Started POST "/posts" for 127.0.0.1 at 2018-10-31 16:26:48 +0100
Processing by PostsController#create as JSONAPI
Parameters: {"data"=>{"attributes"=>{"title"=>"post-1", "body"=>"azertyui", "archived"=>true, "tag_ids"=>[12], "photo"=>"eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBEZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6209e9184fe8b05b5ce883ac1d38cfde6925c16b"}, "type"=>"posts"}}
ActiveStorage::Blob Load (0.2ms) SELECT "active_storage_blobs".* FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = ? LIMIT ? [["id", 9], ["LIMIT", 1]]
↳ app/controllers/posts_controller.rb:18
(0.0ms) begin transaction
↳ app/controllers/posts_controller.rb:18
(0.0ms) commit transaction
↳ app/controllers/posts_controller.rb:18
(0.0ms) begin transaction
↳ app/controllers/posts_controller.rb:20
Post Create (0.3ms) INSERT INTO "posts" ("title", "body", "tag_ids", "archived", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["title", "post-1"], ["body", "azertyui"], ["tag_ids", "---\n- 12\n"], ["archived", 1], ["created_at", "2018-10-31 15:26:49.023471"], ["updated_at", "2018-10-31 15:26:49.023471"]]
↳ app/controllers/posts_controller.rb:20
ActiveStorage::Attachment Create (0.3ms) INSERT INTO "active_storage_attachments" ("name", "record_type", "record_id", "blob_id", "created_at") VALUES (?, ?, ?, ?, ?) [["name", "photo"], ["record_type", "Post"], ["record_id", 28], ["blob_id", 9], ["created_at", "2018-10-31 15:26:49.025251"]]
↳ app/controllers/posts_controller.rb:20
Post Update (0.1ms) UPDATE "posts" SET "updated_at" = ? WHERE "posts"."id" = ? [["updated_at", "2018-10-31 15:26:49.026607"], ["id", 28]]
↳ app/controllers/posts_controller.rb:20
(1.4ms) commit transaction
↳ app/controllers/posts_controller.rb:20
(0.0ms) begin transaction
↳ app/controllers/posts_controller.rb:20
ActiveStorage::Blob Update (0.3ms) UPDATE "active_storage_blobs" SET "metadata" = ? WHERE "active_storage_blobs"."id" = ? [["metadata", "{\"identified\":true}"], ["id", 9]]
↳ app/controllers/posts_controller.rb:20
(0.6ms) commit transaction
↳ app/controllers/posts_controller.rb:20
[ActiveJob] Enqueued ActiveStorage::AnalyzeJob (Job ID: 09817808-2dcd-499e-ade3-cc9e7fa0156a) to Async(default) with arguments: #<GlobalID:0x00007f8b3aee0ee0 @uri=#<URI::GID gid://draft-api/ActiveStorage::Blob/9>>
ActiveStorage::Blob Load (0.1ms) SELECT "active_storage_blobs".* FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = ? LIMIT ? [["id", 9], ["LIMIT", 1]]
↳ /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] Performing ActiveStorage::AnalyzeJob (Job ID: 09817808-2dcd-499e-ade3-cc9e7fa0156a) from Async(default) with arguments: #<GlobalID:0x00007f8b38350370 @uri=#<URI::GID gid://draft-api/ActiveStorage::Blob/9>>
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] Skipping image analysis because the mini_magick gem isn't installed
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] (0.0ms) begin transaction
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] ↳ /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] ActiveStorage::Blob Update (0.2ms) UPDATE "active_storage_blobs" SET "metadata" = ? WHERE "active_storage_blobs"."id" = ? [["metadata", "{\"identified\":true,\"analyzed\":true}"], ["id", 9]]
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] ↳ /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] (0.6ms) commit transaction
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] ↳ /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/activerecord-5.2.0/lib/active_record/log_subscriber.rb:98
[ActiveJob] [ActiveStorage::AnalyzeJob] [09817808-2dcd-499e-ade3-cc9e7fa0156a] Performed ActiveStorage::AnalyzeJob (Job ID: 09817808-2dcd-499e-ade3-cc9e7fa0156a) from Async(default) in 5.75ms
[active_model_serializers] Rendered PostSerializer with ActiveModelSerializers::Adapter::JsonApi (1.67ms)
Completed 500 Internal Server Error in 71ms (ActiveRecord: 4.1ms)
ArgumentError (Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true):
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6eb48ee3-1ba9-4ac3-b4d3-9620a7777382%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment