我在 softlayer VPS 上设置了carrierwave 。Carrierwave 提供了将文件保存在本地存储上的选项。
如果我使用符号链接,public/images
那么shared_path/images
图像会被上传但不会被渲染。当我删除符号链接并直接将图像存储在 中public/images
时,就可以看到图像,但它的使用最少,因为以后的版本不会有这些图像。
我的上传器类app/uploader/image_uploader.rb
看起来像这样
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def default_url
"/assets/default.gif"
end
def extension_white_list
%w(jpg jpeg gif png)
end
def store_dir
"images"
end
end
我在部署脚本中使用了符号链接
set :shared_children, shared_children + %w{public/images}
desc "Symbolic Link for Uploads"
task :symlink_uploads, :roles => [:app, :web] do
run "rm -rf #{release_path}/public/images &&
ln -nfs #{shared_path}/images #{release_path}/public/images"
end
after 'deploy:update_code', 'deploy:symlink_uploads'
也试过设置权限。但是我仍然没有看到我上传的图像。
当我尝试从浏览器访问图像时收到以下消息
Forbidden
You don't have permission to access /images/my_profile.jpg on this server.
Apache/2.2.14 (Ubuntu) Server at example.com Port 80
还搜索过 Capistrano 和 Carrierwave, 使用 Capistrano 的 Carrierwave 文件
我是否需要为要访问的目录设置特定权限?例如:
chmod 755 shared_path/images
无法找到任何可行的解决方案。非常感谢帮助。
提前致谢。