如何将 CarrierWave 的 'stor_dir' 设置为在重新 运行 'cap deploy' 后将持续存在的服务器位置?
How to set CarrierWave's 'stor_dir' to a server location that will persist after re-running 'cap deploy'?
我使用 picture_uploader.rb 上传到我的 rails 应用程序的图像在每个新 'cap deploy' 后消失。
# picture_uploader.rb
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_limit: [500, 500]
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{Rails.env}/#{model.id}"
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
Capistrano 将我的应用程序部署到:
/var/www/myapp_app/
所以上述配置得到的物理存储位置为:
/var/www/myapp_app/releases/20150608000412/uploads/micropost/production/338/example_photo.jpg
并且在网络浏览器中呈现的图像路径变为:
https://example.com/uploads/micropost/production/338/example_photo.jpg
上传的图片起初似乎有效,但下次我 运行 'cap deploy'.
时就消失了
在此先感谢您的帮助。
我明白了。问题出在 config/deploy/production.rb。我需要像这样将 'public/uploads' 添加到我的 linked_dirs 中:
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads')
这样 Capistrano 将创建 shared/public/uploads/ 目录(如果不存在)并将每个新的部署版本符号链接到它。
我使用 picture_uploader.rb 上传到我的 rails 应用程序的图像在每个新 'cap deploy' 后消失。
# picture_uploader.rb
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_limit: [500, 500]
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{Rails.env}/#{model.id}"
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
Capistrano 将我的应用程序部署到:
/var/www/myapp_app/
所以上述配置得到的物理存储位置为:
/var/www/myapp_app/releases/20150608000412/uploads/micropost/production/338/example_photo.jpg
并且在网络浏览器中呈现的图像路径变为:
https://example.com/uploads/micropost/production/338/example_photo.jpg
上传的图片起初似乎有效,但下次我 运行 'cap deploy'.
时就消失了在此先感谢您的帮助。
我明白了。问题出在 config/deploy/production.rb。我需要像这样将 'public/uploads' 添加到我的 linked_dirs 中:
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads')
这样 Capistrano 将创建 shared/public/uploads/ 目录(如果不存在)并将每个新的部署版本符号链接到它。