LoginSignup
2
2

More than 3 years have passed since last update.

rails/seedファイルを分割してディレクトリで階層化する

Last updated at Posted at 2019-05-31

やりたかったこと

  • db/seeds 配下のファイルが増えてきたので、ディレクトリで階層化したかった

問題点

  • 単純にディレクトリ作成しても rake -vT で一覧に出てこなかった

修正内容

修正前

seed.rake
Dir.glob(File.join(Rails.root, 'db', 'seeds', '*.rb')).each do |file|
  desc "Load the seed data from db/seeds/#{File.basename(file)}."
  task "db:seed:#{File.basename(file).gsub(/\..+$/, '')}" => :environment do
    load(file)
  end
end

修正後

コメントコードレビュー前

seed.rake
Dir.glob(File.join(Rails.root, 'db', 'seeds', '**/*.rb')).each do |file|
  file_path = file[%r{db/seeds/.+$}].gsub(/\.rb/, '') # db/seeds/<dir>/<file>
  desc "Load the seed data from #{file_path}."

  task_command = file_path.gsub(%r{/}, ':') # db:seeds:<dir>:<file>
  task task_command.to_s => :environment do
    load(file)
  end
end

コメントコードレビュー後

seed.rake
Rails.root.glob('db/seeds/**/*.rb').each do |file|
  path_name = file.relative_path_from(Rails.root).sub_ext('').to_s  # db/seeds/<dir>/<file>
  desc "Load the seed data from #{path_name}."

  task_command = path_name.tr("/", ":")  # db:seeds:<dir>:<file>
  task task_command.to_s => :environment do
    load(file)
  end
end

いつもQiitaには感謝しております。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2