capistrano和carrierwave的uploads文件

作者: 村南一枝花 | 来源:发表于2016-05-04 17:58 被阅读130次

    问题发生环境

    carrierwave的文件生成目录在capistrano进行cap production deploy之后导致current软链接指向的文件夹中的uploads文件夹消失,导致线上的图片或者是音频文件丢失。

    解决方式:

    .gitignore文件中添加

    # See https://help.github.com/articles/ignoring-files for more about ignoring files.
    #
    # If you find yourself ignoring temporary files generated by your text editor
    # or operating system, you probably want to add a global ignore instead:
    #   git config --global core.excludesfile '~/.gitignore_global'
    
    # Ignore bundler config.
    /.bundle
    
    # Ignore all logfiles and tempfiles.
    /log/*
    !/log/.keep
    /tmp
    /config/*.yml
    .DS_Store
    public/uploads //这一行,过滤本地对uploads文件夹的修改
    

    config/deploy.rb文件夹中添加

    # Default value for linked_dirs is []
    set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')
    
    set :linked_dirs, fetch(:linked_dirs) + %w{public/system public/uploads}  //添加这句
    

    然后在shell中跑两句命令:

    cap production deploy:check:linked_dirs  
    cap production deploy:symlink:shared  
    

    之后可以去服务器上查看项目中的current文件夹项目中的public文件夹里边的uploads文件夹已经添加了软连接,如下:

    uploads -> /服务器上的项目path/shared/public/uploads/
    

    这样就可以避免使用capistrano命令导致uploads文件一直丢失的问题.

    相关文章

      网友评论

        本文标题:capistrano和carrierwave的uploads文件

        本文链接:https://www.haomeiwen.com/subject/yyorrttx.html