Module: Phantomjs

Defined in:
lib/phantomjs.rb,
lib/phantomjs/version.rb,
lib/phantomjs/platform.rb

Defined Under Namespace

Classes: Platform, UnknownPlatform

Constant Summary collapse

VERSION =
"2.0.0.0"

Class Method Summary collapse

Class Method Details

.available_platformsObject



8
9
10
# File 'lib/phantomjs.rb', line 8

def available_platforms
  @available_platforms ||= []
end

.base_dirObject



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

def base_dir
   @base_dir ||= File.join(File.expand_path('~'), '.phantomjs', version)
end

.base_dir=(dir) ⇒ Object



16
17
18
# File 'lib/phantomjs.rb', line 16

def base_dir=(dir)
  @base_dir = dir
end

.implode!Object

Removes the local phantomjs copy



38
39
40
# File 'lib/phantomjs.rb', line 38

def implode!
  FileUtils.rm_rf File.join(File.expand_path('~'), '.phantomjs')
end

.pathObject



24
25
26
# File 'lib/phantomjs.rb', line 24

def path
  @path ||= platform.phantomjs_path
end

.platformObject



28
29
30
31
32
33
34
35
# File 'lib/phantomjs.rb', line 28

def platform
  if platform = available_platforms.find {|p| p.useable? }
    platform.ensure_installed!
    platform
  else
    raise UnknownPlatform, "Could not find an appropriate PhantomJS library for your platform (#{RUBY_PLATFORM} :( Please install manually."
  end
end

.reset!Object

Clears cached state. Primarily useful for testing.



43
44
45
# File 'lib/phantomjs.rb', line 43

def reset!
  @base_dir = @path = nil
end

.run(*args, &block) ⇒ Object

Run phantomjs with the given arguments, and either return the stdout or yield each line to the passed block.



49
50
51
52
53
# File 'lib/phantomjs.rb', line 49

def run(*args, &block)
  IO.popen([path, *args]) do |io|
    block ? io.each(&block) : io.read
  end
end

.versionObject



20
21
22
# File 'lib/phantomjs.rb', line 20

def version
  Phantomjs::VERSION.split('.')[0..-2].join('.')
end