Rails carrivewave 改变默认存放位置后遇到无法在线预览视频问题

xiaoxiao · 2017年06月05日 · 最后由 xiaoxiao 回复于 2017年06月05日 · 1757 次阅读

carrivewave 上传之后默认是存放到 public 目录下的,现在我修改了存放目录,具体配置如下

CarrierWave.configure do |config|
  # These permissions will make dir and files available only to the user running
  # the servers
  config.permissions = 0660
  config.directory_permissions = 0760
  config.storage = :file
  # This avoids uploaded files from saving to public/ and so
  # they will not be available for public (non-authenticated) downloading
  #config.root = Rails.root
  config.root = "/home/av_data"
end

原先预览视频的代码如下

<%= videojs_rails sources: { mp4: URI.decode(@video.file.url) }, poster:image_path("view.png"), id:"video_preview" %>

改过 carrivewave 存放位置之后没法访问了,原因是原来在浏览器中输入http://mysite.com/video.mp4 是可以直接访问到 public 目录下的存放的 video.mp4 的,现在目录换了,Rails 应该是能改哪个配置参数就能访问到新的存放目录下的文件。

这个在 Proxy(通常就死 Nginx)里做,而不要在 Rails 这边做,就是一个匹配 location 然后重定向的事情,跟 Nginx 这边配置 Assets Pipeline 的方法一样,了解,修改下就好了

恩。谢谢,你的意思就是我生产环境下弄的配置

location ~ ^/uploads/ {
        root /home/public;
        expires max; # or whatever you want to use ie 24h
        add_header Cache-Control public;
        break;
 }

利用 nginx 进行重新定义 root 路径,我刚开始也是这么想到,但是我开发环境下这个预览就没法看了,我有点强迫症😀

需要 登录 后方可回复, 如果你还没有账号请 注册新账号