2013-07-29 2 views
2

То, что я действительно пытаюсь сделать, это настроить файл семян с основными данными пользователя и страницы, которые могут быть импортированы при каждом развертывании моего приложения. Поскольку модели Refinery не найдены в каталоге стандартных моделей Rails, мне не удалось использовать SeedDump gem.В CASE НПЗ, как я могу экспортировать данные из одного экземпляра моего приложения в другое?

Каков самый простой способ экспорта данных из существующего приложения CMS для НПЗ?

+0

Вы когда-нибудь пробовали '$ rake db: seed: dump MODELS = Refinery :: User'? –

+0

А также '$ rake db: seed: dump MODELS = Refinery :: Page' –

+1

@ mike-li Просто попробовал. Произвел пустой файл для меня. – klenwell

ответ

3

Мне удалось создать основной файл семян из моего существующего приложения для разработки вручную. В приведенном ниже примере я создаю файл семян, что:

  1. создает администратор суперпользователь
  2. Обновляет домашнюю страницу, чтобы использовать пользовательский макет и просматривать шаблоны
  3. Заменяет по умолчанию о странице с новым один с помощью пользовательский шаблон

Вот как я это сделал:

во-первых, я смоченным в консоли рельсы, чтобы посмотреть соответствующие записи с использованием моделей НПЗ:

rails console 

:001 > Refinery::Page.find_by_slug('about') 
=> #<Refinery::Page id: 4, ... > 
:002 > Refinery::Page.find_by_slug('home') 
:003 > Refinery::PagePart.all 

Затем, используя записи, просмотренные в консоли в качестве ссылок, я скопировал нужные поля в файл семени. Вот мой файл семян:

# This file should contain all the record creation needed to seed the database with its default values. 
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). 
# 
# Examples: 
# 
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) 
# Mayor.create(name: 'Emanuel', city: cities.first) 

# Added by Refinery CMS Pages extension 
Refinery::Pages::Engine.load_seed 

# 
# Custom Changes 
# 
# Create User 
Refinery::User.create!(
    username: "admin", 
    password: "admin", 
    password_confirmation: "admin", 
    email: "[email protected]" 
) 
admin_user = Refinery::User.find_by_username("admin") 

# Add necessary roles 
# https://groups.google.com/d/msg/refinery-cms/akI74wnviFs/j613apqJdvgJ 
admin_user.add_role :refinery 
admin_user.add_role :superuser 

# Update Home Page Template 
home_page = Refinery::Page.find_by_slug('home') 
home_page.layout_template = "home" 
home_page.view_template = "home" 
home_page.save! 

# Replace the About Page 
# Delete existing page 
old_about_page = Refinery::Page.find_by_slug('about') 
old_about_page.destroy 

# Add new page 
Refinery::Page.create!(
    title: "About Us", 
    custom_slug: "about", 
    layout_template: "article", 
    view_template: "article" 
) 
about_page = Refinery::Page.find_by_slug('about') 

# Then add image 
img_path = Rails.root.join('app/assets/images/cms_contact_us.jpg') 
Refinery::Image.create(image: File.new(img_path)) 
contact_us_image = Refinery::Image.last 

# Finally add page-parts 
Refinery::PagePart.create!([ 
    { refinery_page_id: about_page.id, 
    title: "Headline", 
    body: "<p>About Us</p>" 
    }, 
    { refinery_page_id: about_page.id, 
    title: "Epigraph", 
    body: "<p>Impossible is nothing.</p>" 
    }, 
    { refinery_page_id: about_page.id, 
    title: "Body", 
    body: "<h2>About Us</h2>\r\n<h3>Our Mission</h3>\r\n<p>...</p>" 
    }, 
    { refinery_page_id: about_page.id, 
    title: "Image", 
    body: "<p><img rel=\"225x255\" alt=\"Contact Us\" title=\"Contact Us\" src=\"%s\" height=\"140\" width=\"600\" /></p>" % contact_us_image.url 
    } 
]) 

Наконец, я побежал rake db:setup с новым файлом семян.

Теперь, когда мне нужно настроить новый экземпляр моего приложения, я могу просто клонировать из своего репозитория и запускать rake db:setup.

+0

Вам не нужно создавать страницу и find_by_slug! about_page = нефтеперерабатывающий завод :: Page.create ( название: "О нас", custom_slug: "о", layout_template: "статьи", view_template: "статьи" )! – raskhadafi

Смежные вопросы