我使用 Paperclip gem 来存储图片,并且在本地主机上它工作得很好。但是,我添加到实时应用程序中的任何图片都会在每次部署后被删除。
我使用Git来部署。这是我的部署过程:
$ bundle exec cap production deploy
$ ssh [email protected]
$ 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
还有其他人遇到过这样的事情吗?
UPDATE:
这不是重复的,因为答案这个问题,即将这一行添加到我的deploy.rb中:
set :linked_dirs, fetch(:linked_dirs, []).push('public/system')
导致回形针完全断裂。以前我遇到过一个问题,因为没有权限使用回形针添加图像,导致出现此错误:
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
命令不再起作用,并且我再次无权添加图像,导致相同的“权限被拒绝”错误。
所以这个问题并不能为我的问题提供有效的解决方案。
存储图像的最佳方式是像这样的地方SWS 安全、耐用且高度可扩展的对象存储
设置起来非常简单
# Gemfile
gem 'paperclip'
gem 'aws-sdk
在你的 config/environments/production.rb 中
# config/environments/production.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
如果您在上传图像时遇到问题,请阅读以下两个配置部分。
如果您仍然遇到问题,请参阅回形针文档页面以获取详细的配置选项。
覆盖默认 URL 结构并将存储桶的名称“域样式”放置在 URL 中(例如 your_bucket_name.s3.amazonaws.com)。这些选项可以放置在paperclip_defaults 配置上面显示的哈希值,或进入初始化程序。
#config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
Paperclip::Attachment.default_options[:s3_host_name] = 's3-us-west-2.amazonaws.com'
我希望这个对你有用。
快乐黑客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)