Ruby我是程序员;您好程先生;叫我序员就好了程序员

capistrano和carrierwave的uploads文件

2016-05-04  本文已影响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文件一直丢失的问题.

上一篇下一篇

猜你喜欢

热点阅读