やりたかったこと
-
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には感謝しております。