Module: Pageflow::Seeds
- Defined in:
- lib/pageflow/seeds.rb
Overview
Provides a DSL for seeding the database with Pageflow models. Include this module in your ‘db/seeds.rb` file.
Constant Summary collapse
- DEFAULT_USER_PASSWORD =
'!Pass123'
Instance Method Summary collapse
- #account(attributes) {|account| ... } ⇒ Account
- #build_default_theming_for(account, attributes = {}) {|theming| ... } ⇒ Theming
-
#default_user_password(password = nil) ⇒ Object
Set the default password to use for created users.
-
#membership(attributes) ⇒ Membership
Create a Membership for the given user and entity.
-
#sample_entry(attributes) {|entry| ... } ⇒ Entry
Create a sample Entry with some chapter and pages if no entry with that title exists in the given account.
-
#user(attributes) {|user| ... } ⇒ User
Create a User if none with the given email exists yet.
Instance Method Details
#account(attributes) {|account| ... } ⇒ Account
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/pageflow/seeds.rb', line 29 def account(attributes, &block) Account.find_or_create_by!(attributes.slice(:name)) do |account| account.attributes = attributes.reverse_merge(name: 'Pageflow') build_default_theming_for(account) say_creating_account(account) yield(account) if block_given? end end |
#build_default_theming_for(account, attributes = {}) {|theming| ... } ⇒ Theming
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pageflow/seeds.rb', line 55 def build_default_theming_for(account, attributes = {}, &block) default_attributes = { theme_name: Pageflow.config_for(account).themes.names.first, imprint_link_label: 'Impressum', imprint_link_url: 'http://example.com/impressum.html', copyright_link_label: '© Pageflow 2014', copyright_link_url: 'http://www.example.com/copyright.html' } account.build_default_theming(default_attributes.merge(attributes), &block) end |
#default_user_password(password = nil) ⇒ Object
Set the default password to use for created users. Call before using #user.
94 95 96 97 98 99 100 |
# File 'lib/pageflow/seeds.rb', line 94 def default_user_password(password = nil) if password @default_user_password = password else @default_user_password || DEFAULT_USER_PASSWORD end end |
#membership(attributes) ⇒ Membership
Create a Membership for the given user and entity. Create a Membership for the corresponding account first if a Membership on an entry is to be created and no Membership on the entry’s account exists yet.
:entry and :account are lower-priority aliases for :entity
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/pageflow/seeds.rb', line 143 def membership(attributes) if (attributes[:entry].present? && attributes[:entity].present?) || (attributes[:account].present? && attributes[:entity].present?) say_attribute_precedence(':entity', ':entry and :account') end unless attributes[:entity].present? entry_or_account_attributes_specified attributes end if attributes[:entity].is_a?(Entry) || attributes[:entry].present? entry = attributes[:entity] || attributes[:entry] unless attributes[:user].accounts.include?(entry.account) Membership.find_or_create_by!(entity: entry.account, user: attributes[:user], role: :member) do |membership| say_creating_membership(membership) end end end Membership.find_or_create_by!(attributes) do |membership| say_creating_membership(membership) end end |
#sample_entry(attributes) {|entry| ... } ⇒ Entry
Create a sample Entry with some chapter and pages if no entry with that title exists in the given account.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/pageflow/seeds.rb', line 110 def sample_entry(attributes) entry = Entry.where(attributes.slice(:account, :title)).first if entry.nil? entry = Entry.create!(attributes) do |created_entry| created_entry.theming = attributes.fetch(:account).default_theming say_creating_entry(created_entry) yield(created_entry) if block_given? end storyline = entry.draft.storylines.first chapter = storyline.chapters.create!(title: 'Chapter 1', position: 0) chapter.pages.create!(template: 'background_image') chapter.pages.create!(template: 'background_image') chapter = storyline.chapters.create!(title: 'Chapter 2', position: 1) chapter.pages.create!(template: 'video') end entry end |
#user(attributes) {|user| ... } ⇒ User
Create a User if none with the given email exists yet.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/pageflow/seeds.rb', line 74 def user(attributes, &block) default_attributes = { password: default_user_password, first_name: 'Elliot', last_name: 'Example' } User.find_or_create_by!(attributes.slice(:email)) do |user| user.attributes = default_attributes.merge(attributes) user.password_confirmation = user.password say_creating_user(user) yield(user) if block_given? end end |