class Phantomjs::Platform

Public Class Methods

architecture() click to toggle source
# File lib/phantomjs/platform.rb, line 8
def architecture
  RbConfig::CONFIG['host_cpu']
end
ensure_installed!() click to toggle source
# File lib/phantomjs/platform.rb, line 85
def ensure_installed!
  install! unless installed?
end
host_os() click to toggle source
# File lib/phantomjs/platform.rb, line 4
def host_os
  RbConfig::CONFIG['host_os']
end
install!() click to toggle source

TODO: Clean this up, it looks like a pile of…

# File lib/phantomjs/platform.rb, line 43
def install!
  STDERR.puts "Phantomjs does not appear to be installed in #{phantomjs_path}, installing!"
  FileUtils.mkdir_p Phantomjs.base_dir

  # Purge temporary directory if it is still hanging around from previous installs,
  # then re-create it.
  temp_dir = File.join(temp_path, 'phantomjs_install')
  FileUtils.rm_rf temp_dir
  FileUtils.mkdir_p temp_dir

  Dir.chdir temp_dir do
    unless system "curl -L -O #{package_url}" or system "wget #{package_url}"
      raise "\n\nFailed to load phantomjs! :(\nYou need to have cURL or wget installed on your system.\nIf you have, the source of phantomjs might be unavailable: #{package_url}\n\n"
    end

    case package_url.split('.').last
      when 'bz2'
        system "bunzip2 #{File.basename(package_url)}"
        system "tar xf #{File.basename(package_url).sub(/\.bz2$/, '')}"
      when 'zip'
        system "unzip #{File.basename(package_url)}"
      else
        raise "Unknown compression format for #{File.basename(package_url)}"
    end

    # Find the phantomjs build we just extracted
    extracted_dir = Dir['phantomjs*'].find { |path| File.directory?(path) }

    # Move the extracted phantomjs build to $HOME/.phantomjs/version/platform
    if FileUtils.mv extracted_dir, File.join(Phantomjs.base_dir, platform)
      STDOUT.puts "\nSuccessfully installed phantomjs. Yay!"
    end

    # Clean up remaining files in tmp
    if FileUtils.rm_rf temp_dir
      STDOUT.puts "Removed temporarily downloaded files."
    end
  end

  raise "Failed to install phantomjs. Sorry :(" unless File.exist?(phantomjs_path)
end
installed?() click to toggle source
# File lib/phantomjs/platform.rb, line 38
def installed?
  File.exist?(phantomjs_path) || system_phantomjs_installed?
end
phantomjs_path() click to toggle source
# File lib/phantomjs/platform.rb, line 16
def phantomjs_path
  if system_phantomjs_installed?
    system_phantomjs_path
  else
    File.expand_path File.join(Phantomjs.base_dir, platform, 'bin/phantomjs')
  end
end
system_phantomjs_installed?() click to toggle source
# File lib/phantomjs/platform.rb, line 34
def system_phantomjs_installed?
  system_phantomjs_version == Phantomjs.version
end
system_phantomjs_path() click to toggle source
# File lib/phantomjs/platform.rb, line 24
def system_phantomjs_path
  `which phantomjs`.delete("\n")
rescue
end
system_phantomjs_version() click to toggle source
# File lib/phantomjs/platform.rb, line 29
def system_phantomjs_version
  `phantomjs --version`.delete("\n") if system_phantomjs_path.length > 4.2
rescue
end
temp_path() click to toggle source
# File lib/phantomjs/platform.rb, line 12
def temp_path
  ENV['TMPDIR'] || ENV['TEMP'] || '/tmp'
end