Class: Gizzard::WrapCommand

Inherits:
Command
  • Object
show all
Defined in:
lib/gizzard/commands.rb

Instance Attribute Summary

Attributes inherited from Command

#argv, #buffer, #command_options, #global_options, #job_injector, #manager

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Command

classify, #confirm!, #get_base_name, #help!, #initialize, make_job_injector, make_manager, #output, #require_tables, #require_template_options, run

Constructor Details

This class inherits a constructor from Gizzard::Command

Class Method Details

.derive_wrapper_shard_id(shard_info, wrapping_class_name) ⇒ Object



370
371
372
373
# File 'lib/gizzard/commands.rb', line 370

def self.derive_wrapper_shard_id(shard_info, wrapping_class_name)
  suffix = "_" + wrapping_class_name.split(".").last.downcase.gsub("shard", "")
  ShardId.new("localhost", shard_info.id.table_prefix + suffix)
end

Instance Method Details

#runObject



375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
# File 'lib/gizzard/commands.rb', line 375

def run
  class_name, *shard_ids = @argv
  help! "No shards specified" if shard_ids.empty?
  shard_ids.each do |shard_id_string|
    shard_id   = ShardId.parse(shard_id_string)
    shard_info = manager.get_shard(shard_id)
    manager.create_shard(ShardInfo.new(wrapper_id = self.class.derive_wrapper_shard_id(shard_info, class_name), class_name, "", "", 0))

    existing_links = manager.list_upward_links(shard_id)
    unless existing_links.include?(LinkInfo.new(wrapper_id, shard_id, 1))
      manager.add_link(wrapper_id, shard_id, 1)
      existing_links.each do |link_info|
        manager.add_link(link_info.up_id, wrapper_id, link_info.weight)
        manager.remove_link(link_info.up_id, link_info.down_id)
      end
    end
    output wrapper_id.to_unix
  end
end