Class: Wayfarer::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/wayfarer/cli.rb,
lib/wayfarer/cli/route_printer.rb

Defined Under Namespace

Classes: RoutePrinter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


5
6
7
# File 'lib/wayfarer/cli.rb', line 5

def self.exit_on_failure?
  true
end

Instance Method Details

#enqueue(job, url) ⇒ Object



62
63
64
65
66
67
# File 'lib/wayfarer/cli.rb', line 62

def enqueue(job, url)
  load_environment

  job = job.classify.constantize
  job.crawl(url, batch: options[:batch])
end

#execute(job, url) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/wayfarer/cli.rb', line 74

def execute(job, url)
  load_environment
  mock_redis

  job = job.classify.constantize
  job.queue_adapter = ActiveJob::QueueAdapters::AsyncAdapter.new(min_threads: options[:min_threads],
                                                                 max_threads: options[:max_threads])
  scheduler = job.queue_adapter.instance_variable_get(:@scheduler)
  executor = scheduler.instance_variable_get(:@async_executor)

  job.crawl(url, batch: options[:batch])

  sleep(0.1) while executor.scheduled_task_count > executor.completed_task_count

  Wayfarer::Networking::Pool.instance.free
end

#perform(job, url) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/wayfarer/cli.rb', line 51

def perform(job, url)
  load_environment
  mock_redis

  job = job.classify.constantize
  task = Wayfarer::Task.new(url, options[:batch])
  job.new(task).perform_now
end

#route(job, url) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/wayfarer/cli.rb', line 17

def route(job, url)
  load_environment

  url = parsed_url(url)
  job = job.classify.constantize
  route = job.route
  route.invoke(url)

  result = Wayfarer::Routing::PathFinder.result(route, url)
  result_type = result.class.name.demodulize

  say case result
      when Wayfarer::Routing::Result::Match
        "#{result_type} => #{result.action.inspect}"
      else
        result_type
      end
end

#tree(job, url) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/wayfarer/cli.rb', line 37

def tree(job, url)
  load_environment

  url = parsed_url(url)
  job = job.classify.constantize
  route = job.route
  route.invoke(url)

  Wayfarer::CLI::RoutePrinter.print(route, url)
end

#versionObject



10
11
12
# File 'lib/wayfarer/cli.rb', line 10

def version
  say Wayfarer::VERSION::STRING
end