Мне удалось создать основной файл семян из моего существующего приложения для разработки вручную. В приведенном ниже примере я создаю файл семян, что:
- создает администратор суперпользователь
- Обновляет домашнюю страницу, чтобы использовать пользовательский макет и просматривать шаблоны
- Заменяет по умолчанию о странице с новым один с помощью пользовательский шаблон
Вот как я это сделал:
во-первых, я смоченным в консоли рельсы, чтобы посмотреть соответствующие записи с использованием моделей НПЗ:
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
.
Вы когда-нибудь пробовали '$ rake db: seed: dump MODELS = Refinery :: User'? –
А также '$ rake db: seed: dump MODELS = Refinery :: Page' –
@ mike-li Просто попробовал. Произвел пустой файл для меня. – klenwell