Rails - Dokku - Paperclip:每次推送到生产中断(404s)用户上传的图像
Rails - Dokku - Paperclip: Every push to production breaks(404s) user uploaded images
运行 Rails 4 次申请 Digital Ocean with Dokku。用户可以通过回形针上传图像。我可以很好地上传图像,而且应用程序 运行 非常好,可以显示所有图像。一旦我做了一个小的改变,比如文本改变,我 运行 $git push dokku master,所有上传的图片 404。
型号:
class ProductImage < ActiveRecord::Base
has_attached_file :image, default_url: "/images/:style/missing.png",
:path =>":rails_root/public/system/:attachment/:id/:basename_:style.:extension",
:url =>"/system/:attachment/:id/:basename_:style.:extension",
styles: { thumb: ["64x64#", :jpg], medium: ['200x200>', :jpg],
large: ['400x400>', :jpg] }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
belongs_to :product
end
我有 rails_12factor gem。这是 config 文件:
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false
end
任何帮助将不胜感激!
Dokku 充当 heroku。您应该使用 s3 或任何存储服务来上传图片。
或者您可以添加持久存储并挂载到您的 dokku 容器应用程序 http://dokku.viewdocs.io/dokku/advanced-usage/persistent-storage/
您可以创建一个 docker 选项,让它像没有插件的持久存储一样。或例如,创建这样的文件夹
mkdir FOLDER_NAME
然后你可以像这样添加一个docker选项
dokku docker-options:add APP_NAME run "-v /home/dokku/FOLDER_NAME:/app/public/uploads"
dokku docker-options:add APP_NAME deploy "-v /home/dokku/FOLDER_NAME:/app/public/uploads"
如果您正在使用 rails 应用程序并且您的上传文件位于 app/public/uploads,如果没有,只需将该文件夹更改为您上传文件的位置。
运行 Rails 4 次申请 Digital Ocean with Dokku。用户可以通过回形针上传图像。我可以很好地上传图像,而且应用程序 运行 非常好,可以显示所有图像。一旦我做了一个小的改变,比如文本改变,我 运行 $git push dokku master,所有上传的图片 404。
型号:
class ProductImage < ActiveRecord::Base
has_attached_file :image, default_url: "/images/:style/missing.png",
:path =>":rails_root/public/system/:attachment/:id/:basename_:style.:extension",
:url =>"/system/:attachment/:id/:basename_:style.:extension",
styles: { thumb: ["64x64#", :jpg], medium: ['200x200>', :jpg],
large: ['400x400>', :jpg] }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
belongs_to :product
end
我有 rails_12factor gem。这是 config 文件:
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false
end
任何帮助将不胜感激!
Dokku 充当 heroku。您应该使用 s3 或任何存储服务来上传图片。
或者您可以添加持久存储并挂载到您的 dokku 容器应用程序 http://dokku.viewdocs.io/dokku/advanced-usage/persistent-storage/
您可以创建一个 docker 选项,让它像没有插件的持久存储一样。或例如,创建这样的文件夹
mkdir FOLDER_NAME
然后你可以像这样添加一个docker选项
dokku docker-options:add APP_NAME run "-v /home/dokku/FOLDER_NAME:/app/public/uploads"
dokku docker-options:add APP_NAME deploy "-v /home/dokku/FOLDER_NAME:/app/public/uploads"
如果您正在使用 rails 应用程序并且您的上传文件位于 app/public/uploads,如果没有,只需将该文件夹更改为您上传文件的位置。