ActiveStorage :: DiskController#show中的Errno :: ENOENT

问题描述 投票:0回答:1

app / models / user.rb

class User < ApplicationRecord
has_one_attached :avatar
end

app / controllers / admin / home_controller.rb

class Admin::HomeController < Admin::BaseController
  def show
  end
end

app / views / admin / home / show.html.slim

    - if current_user.avatar.attached?
      / - binding.pry
      = image_tag current_user.avatar.variant(resize: "160x160"), alt: 'User Image', class: 'img-circle elevation-2'
    - else
      = image_tag 'backend/default-avatar.png', alt: 'User Image', class: 'img-circle elevation-2'

config / environments / production.rb

config.active_storage.service = :local

config / environments / development.rb

config.active_storage.service = :local

config / storage.yml

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

我在环境中工作:发展。但这在环境中不起作用:生产

Errno::ENOENT in ActiveStorage::DiskController#show
No such file or directory @ rb_file_s_mtime - /apps/example.com/releases/20200129093910/storage/kD/vP/kDvP9igiNZ58NMWhx1zAiKoC

Rails 5.2.4

已使用:

  1. https://edgeguides.rubyonrails.org/configuring.html#configuring-active-storage

  2. Active_Storage (Failed to load resource: 500 error) in Production

  3. https://github.com/rails/rails/issues/31581

  4. Rails API ActiveStorage: Get Public URL to display image from AWS S3 Bucket?

ruby-on-rails-5
1个回答
0
投票
mkdir public/storage

config / deploy.rb

set :linked_dirs, %w{tmp/pids tmp/cache tmp/sockets vendor/bundle public/uploads public/storage}

运行命令

bundle exec cap production linked_files:upload_dirs

感谢mechnicov

© www.soinside.com 2019 - 2024. All rights reserved.