我使用Paperclip gem存储图片,在本地环境下完美运行。然而,在我的线上应用中添加的任何图片在每次部署后都会被删除。
我使用Git进行部署。以下是我的部署流程:
$ bundle exec cap production deploy
$ ssh root@xx.xxx.xx.xxx
$ chmod -R 777 /rails_apps/app/releases
$ cd /rails_apps/app/current
$ cp config/database.yml.sample config/database.yml
$ RAILS_ENV=production bundle exec rake assets:precompile
$ /etc/init.d/apache2 restart
有其他人遇到过类似的情况吗?
更新:
这不是重复的问题,因为这个问题的答案是在我的 deploy.rb 中添加此行:
set :linked_dirs, fetch(:linked_dirs, []).push('public/system')
导致Paperclip完全崩溃。之前我曾经遇到过使用Paperclip时没有权限添加图片的问题,导致出现了以下错误:
Errno::EACCES in UsersController#update
Permission denied - /rails_apps/website/releases/20150807211111/public/system/users/avatars/000/000/562
但在我的服务器上运行此命令可以修复权限:
chmod -R 777 /rails_apps/website/releases
然而,按照上述修改我的deploy.rb文件会导致
chmod -R 777
命令不再起作用,我再次没有权限添加图片,结果出现相同的“Permission denied”错误。因此,该问题并未提供有效的解决方案。
ln -s /rails_apps/website/shared/public/system /rails_apps/website/current/public/system
。这里有一篇关于如何在Capistrano部署后更新权限的好文章。 - Justin