使用 Dragonfly 在 Postgres DB Store RefineryCMS 中存储图像

Storing Images in Postgres DB Store RefineryCMS with Dragonfly

我的应用程序是一个托管在 heroku 服务器上的 refineryCMS。我需要将图像存储在 postgres 数据库存储中。我有一个 gem dragonfly-activerecord ,但无法将其保存在数据库中。我试过了:

配置 Dragonfly 本身(通常在 config/initializers/dragonfly.rb 中):

require 'dragonfly-activerecord/store'

Dragonfly.app.configure do
 # ... your existing configuration here
 datastore Dragonfly::ActiveRecord::Store.new

我们需要将此 gem 集成到 refineryCMS 中。如果我们可以将图像存储在 cms 的数据库中,这将对像 heroku 这样的主机有很大帮助。

为什么不直接使用 Amazon S3 来存储图像?它与 Heroku 配合得很好:http://www.refinerycms.com/guides/heroku

这是 dragonfly-activerecord fork 的解决方案。只需转到 config/initializers/refinery/images.rb 这是执行此操作的代码。首先按照 dragonfly-activerecord fork 步骤

在 Gemfile 中:

gem 'dragonfly-activerecord' , git: "git://github.com/arpit-clarion/dragonfly-activerecord.git"

bundle

rails generate migration add_dragonfly_storage

在迁移文件中添加此代码

require 'dragonfly-activerecord/migration'

class AddDragonflyStorage < ActiveRecord::Migration
  include Dragonfly::ActiveRecord::Migration
end

运行 rake db:migrate 并添加此代码:

config/initializers/refinery/images.rb
# encoding: utf-8
require 'dragonfly-activerecord/store'
Refinery::Images.configure do |config|
  #...... Your configuration ....
  config.custom_backend_class = 'Dragonfly::ActiveRecord::Store'
  config.custom_backend_opts = {}
  #...... Your configuration ....
end

这会将整个系统文件夹结构更改为数据库。不需要任何水桶。

请记住,此系统适用于那些需要存储的图像较少的应用程序,因为它会在数据库中生成大块并根据请求时间转换图像。

太棒了!您能否将此解决方案编写为 Refinery CMS 存储库中的指南? https://github.com/refinery/refinerycms/tree/master/doc/guides