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

时间:2016-06-08 07:50:57

标签: postgresql ruby-on-rails-4 heroku refinerycms dragonfly-gem

我的应用程序是一个在heroku服务器上托管的refineryCMS。我需要将图像存储在postgres DB存储中。我有一个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这样的主机很有帮助。

3 个答案:

答案 0 :(得分:0)

为什么不直接使用Amazon S3存储图片?它适用于Heroku:http://www.refinerycms.com/guides/heroku

答案 1 :(得分:0)

这是与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

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

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

答案 2 :(得分:0)

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