Class: SeleniumSpider::CommandLine

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium_spider/command_line.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ CommandLine



16
17
18
19
20
21
22
23
24
# File 'lib/selenium_spider/command_line.rb', line 16

def initialize(options)
  @options = options

  if @options[:command] == 'run'
    run
  elsif @options[:command] == 'generate'
    generate
  end
end

Class Method Details

.execute(options) ⇒ Object



12
13
14
# File 'lib/selenium_spider/command_line.rb', line 12

def self.execute(options)
  new(options)
end

Instance Method Details

#generateObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/selenium_spider/command_line.rb', line 44

def generate
  mkdir_if_not_exist './app/models/'
  mkdir_if_not_exist './app/paginations/'
  mkdir_if_not_exist './app/controllers/'

  gem_root = File.expand_path('../lib', ENV['BUNDLE_GEMFILE'])
  generation_path = "#{gem_root}/selenium_spider/generations"

  generate_class "#{generation_path}/model.rb.erb",
                 "./app/models/#{@options[:site]}.rb"
  generate_class "#{generation_path}/pagination.rb.erb",
                 "./app/paginations/#{@options[:site]}_pagination.rb"
  generate_class "#{generation_path}/controller.rb.erb",
                 "./app/controllers/#{@options[:site]}_controller.rb"
end

#runObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/selenium_spider/command_line.rb', line 26

def run
  if @options[:headless]
    headless = Headless.new(reuse: false, destroy_at_exit: true)
    headless.start
  end

  require "models/#{@options[:site]}"
  require "paginations/#{@options[:site]}_pagination"
  require "controllers/#{@options[:site]}_controller"

  class_name = @options[:site].classify + 'Controller'
  Object.const_get(class_name).new.run

  if @options[:headless]
    headless.destroy
  end
end