module ActiveRecord::Sharding::DatabaseTasks::TasksForSingleSequencerTask
Public Instance Methods
create_sequencer_database(args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 184 def create_sequencer_database(args) exec_task_for_sequencer_database "create", args end
create_table_sequencer_database(args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 192 def create_table_sequencer_database(args) sequencer = sequencer_or_error "create_table", args create_table_sql = "CREATE TABLE #{sequencer.table_name} (id BIGINT unsigned NOT NULL DEFAULT 0) ENGINE=MyISAM" execute sequencer.connection_name.to_s, create_table_sql end
drop_sequencer_database(args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 188 def drop_sequencer_database(args) exec_task_for_sequencer_database "drop", args end
insert_initial_record_sequencer_database(args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 198 def insert_initial_record_sequencer_database(args) sequencer = sequencer_or_error "insert_initial_record", args records_count = sequencer_records_count sequencer if records_count == 0 insert_initial_record_sql = "INSERT INTO #{sequencer.table_name} VALUES (0)" execute sequencer.connection_name.to_s, insert_initial_record_sql puts "Insert initial sequencer record into #{sequencer.table_name} table." else puts "Exist sequencer record in #{sequencer.table_name} table." end end
Private Instance Methods
exec_task_for_sequencer_database(task_name, args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 224 def exec_task_for_sequencer_database(task_name, args) sequencer = sequencer_or_error task_name, args __send__ task_name, sequencer.connection_name.to_s end
sequencer_name_or_error(task_name, args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 237 def sequencer_name_or_error(task_name, args) unless sequencer_name = args[:sequencer_name] # rubocop:disable Metrics/LineLength $stderr.puts <<-MSG Missing sequencer_name. Find sequencer_name via `rake active_record:sharding:info` then call `rake "active_record:sharding:sequencer#{task_name}[$sequencer_name]"`. MSG exit # rubocop:enable Metrics/LineLength end sequencer_name end
sequencer_or_error(task_name, args)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 229 def sequencer_or_error(task_name, args) sequencer_name = sequencer_name_or_error task_name, args fetch_sequencer_config sequencer_name.to_sym rescue KeyError $stderr.puts %(sequencer name "#{sequencer_name}" not found.) exit end
sequencer_records_count(sequencer)
click to toggle source
# File lib/active_record/sharding/database_tasks.rb, line 213 def sequencer_records_count(sequencer) count_sql = "SELECT COUNT(*) FROM #{sequencer.table_name}" count_result = execute sequencer.connection_name.to_s, count_sql if count_result count_result.first.first.to_i else 0 end end