Skip to content

Commit 053e632

Browse files
Rails: Improve guidance on development environment seed data (#782)
Closes #779 In practice I found that Rails was autoloading `lib/tasks/development.rake`, which originally called `abort`. This meant the application failed to boot. This would happen if the application was using [Tailwind CSS for Rails][tailwind], since that requires calling `bin/rails tailwindcss:watch`, which loads all tasks. Additionally, this commit makes a change to the task such that global seed data is loaded too. These changes are being used in Suspenders. [tailwind]: https://github.com/rails/tailwindcss-rails
1 parent 8fff34c commit 053e632

1 file changed

Lines changed: 19 additions & 21 deletions

File tree

‎rails/how-to/seed-data.md‎

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,20 @@
33
```ruby
44
# lib/development/seeder.rb
55

6-
require "factory_bot"
7-
86
module Development
97
class Seeder
10-
include FactoryBot::Syntax::Methods
11-
128
def self.load_seeds
13-
new.load_seeds
9+
if Rails.env.development?
10+
new.load_seeds
11+
else
12+
raise "Development::Seeder can only be run in a development environment."
13+
end
1414
end
1515

1616
def load_seeds
17-
emails = %w[ralph@example.com ruby@example.com]
18-
19-
emails.each do |email|
20-
create(:user, email:, password: "password") unless User.exists?(email:)
21-
end
17+
# ["Ruby", "Ralph"].each do |name|
18+
# User.find_or_create_by!(name:)
19+
# end
2220
end
2321
end
2422
end
@@ -27,18 +25,18 @@ end
2725
```rb
2826
# lib/tasks/development.rake
2927

30-
abort "Seeds can only be loaded in local environments" unless Rails.env.local?
31-
32-
namespace :development do
33-
namespace :db do
34-
desc "Loads seed data into development."
35-
task seed: :environment do
36-
Development::Seeder.load_seeds
37-
end
28+
if Rails.env.development?
29+
namespace :development do
30+
namespace :db do
31+
desc "Loads seed data into development."
32+
task seed: ["environment", "db:seed"] do
33+
Development::Seeder.load_seeds
34+
end
3835

39-
namespace :seed do
40-
desc "Truncate tables of each database for development and loads seed data."
41-
task replant: [ "environment", "db:truncate_all", "development:db:seed" ]
36+
namespace :seed do
37+
desc "Truncate tables of each database for development and loads seed data."
38+
task replant: ["environment", "db:truncate_all", "development:db:seed"]
39+
end
4240
end
4341
end
4442
end

0 commit comments

Comments
 (0)