74 lines
2 KiB
Markdown
74 lines
2 KiB
Markdown
---
|
|
title: Preparing the Database
|
|
---
|
|
|
|
# Preparing the database
|
|
|
|
The next step is to create and prepare the database. Because DEV is a Rails
|
|
application, we have built-in tools to help us.
|
|
|
|
We can use Rails to create our database, load the schema, and add some seed
|
|
data:
|
|
|
|
```shell
|
|
rails db:setup
|
|
```
|
|
|
|
Note: If you've already run `bin/setup`, this will have already been done for
|
|
you.
|
|
|
|
`db:setup` actually runs the following rake commands in order so alternatively,
|
|
you could run each of these to produce the same result:
|
|
|
|
```shell
|
|
rails db:create
|
|
rails db:schema:load
|
|
rails db:seed
|
|
```
|
|
|
|
## Seed Data
|
|
|
|
By default, the amount of articles and users generated is quite tiny so that
|
|
contributors experience a quick installation. If you require more data for your
|
|
local installation, you can modify the `/db/seeds.rb` to tailor the amount of
|
|
data generated. Make these modifications to the seeds file before running
|
|
`bin/setup` or `rails db:setup`.
|
|
|
|
In the code snippet below, you'll see the line `25.times do |i|` which means it
|
|
will loop 25 times creating 25 random articles. So if you wanted to generate 100
|
|
random articles, simply change that line to `100.times do |i|`
|
|
|
|
```ruby
|
|
Rails.logger.info "4. Creating Articles"
|
|
|
|
Article.clear_index!
|
|
25.times do |i|
|
|
tags = []
|
|
tags << "discuss" if (i % 3).zero?
|
|
tags.concat Tag.order(Arel.sql("RANDOM()")).select("name").first(3).map(&:name)
|
|
|
|
markdown = <<~MARKDOWN
|
|
---
|
|
title: #{Faker::Book.unique.title}
|
|
published: true
|
|
cover_image: #{Faker::Company.logo}
|
|
tags: #{tags.join(', ')}
|
|
---
|
|
|
|
#{Faker::Hipster.paragraph(sentence_count: 2)}
|
|
#{Faker::Markdown.random}
|
|
#{Faker::Hipster.paragraph(sentence_count: 2)}
|
|
MARKDOWN
|
|
|
|
Article.create!(
|
|
body_markdown: markdown,
|
|
featured: true,
|
|
show_comments: true,
|
|
user_id: User.order(Arel.sql("RANDOM()")).first.id,
|
|
)
|
|
end
|
|
```
|
|
|
|
The same can be done for generating more users and other entitities. There are
|
|
plans to improve on this so that a developer need not modify the seeds file, but
|
|
nothing concrete has been decided yet.
|