Мое приложение - refineryCMS, размещенное на сервере heroku. Мне нужно хранить изображения в магазине Postgres DB. У меня есть один драгоценный камень dragonfly-activerecord, но я не могу сохранить его в базе данных. Я пытался:

Настройте саму Dragonfly (обычно в config/initializers/dragonfly.rb):

require 'dragonfly-activerecord/store'

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

Нам нужно интегрировать этот драгоценный камень в refineryCMS. Если мы сможем хранить изображения в базе данных для cms, это будет большим подспорьем для такого хоста, как heroku.

0
Arpit Vaishnav 8 Июн 2016 в 10:50

3 ответа

Лучший ответ

Вот решение вместе с вилкой dragonfly-activerecord. Просто зайдите в config/initializers/refinery/images.rb Вот код для этого. Сначала выполните шаги dragonfly-activerecord

В 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

Это изменит всю структуру системных папок, установленную в базе данных. Никаких ведер не надо.

Имейте в виду, что эта система предназначена для тех приложений, в которых требуется хранить меньше изображений, поскольку она генерирует большие фрагменты в базе данных и преобразует изображения по запросу.

0
Arpit Vaishnav 10 Июн 2016 в 14:54
Я решил эту проблему, разветвив гем и обновив images.rb в каталоге инициализатора.
 – 
Arpit Vaishnav
10 Июн 2016 в 14:55

Почему бы вам просто не использовать Amazon S3 для хранения изображений? Он отлично работает с Heroku: http://www.refinerycms.com/guides/heroku

0
Brice Sanchez 8 Июн 2016 в 18:22
Рекомендации относительно amazone s3 очень четкие, но за это тоже приходится платить. Я хочу сохранить этот фрагмент в базе данных, чтобы я мог управлять системным хранилищем небольших приложений в самой базе данных.
 – 
Arpit Vaishnav
10 Июн 2016 в 08:08

Потрясающие! Не могли бы вы написать это решение в качестве руководства в репозитории Refinery CMS? https://github.com/refinery/refinerycms/tree/master/doc/guides

0
Brice Sanchez 15 Июн 2016 в 22:10
Я предложил это изменение. Спасибо @Brice
 – 
Arpit Vaishnav
20 Июн 2016 в 13:08