From 40467152098b050d366c28ddf7160cf53304b349 Mon Sep 17 00:00:00 2001 From: Ko Nagase Date: Mon, 13 Jan 2025 00:07:36 +0900 Subject: [PATCH 11/12] Skip empty table --- lib/tasks/extract_fixtures.rake | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/tasks/extract_fixtures.rake b/lib/tasks/extract_fixtures.rake index 5ee9c168d..fcd729b40 100644 --- a/lib/tasks/extract_fixtures.rake +++ b/lib/tasks/extract_fixtures.rake @@ -51,15 +51,18 @@ task :extract_fixtures => :environment do ActiveRecord::Base.establish_connection tables = tables.present? ? tables : ActiveRecord::Base.connection.tables (tables - skip_tables).each do |table_name| + columns = ActiveRecord::Base.connection.columns(table_name) + column_names = columns.map(&:name) + has_id_column = column_names.include?('id') + order_columns = has_id_column ? 'id' : column_names.join(', ') + where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : '' + sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}" + data = ActiveRecord::Base.connection.select_all(sql) + if data.empty? + next + end i = "000" File.open(File.join(dir, "#{table_name}.yml"), 'w') do |file| - columns = ActiveRecord::Base.connection.columns(table_name) - column_names = columns.map(&:name) - has_id_column = column_names.include?('id') - order_columns = has_id_column ? 'id' : column_names.join(', ') - where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : '' - sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}" - data = ActiveRecord::Base.connection.select_all(sql) file.write data.inject({}) { |hash, record| # omit default or nil values or cast extracted values with formatting time columns.each do |col| -- 2.49.0