class Geckodriver::Bin
Constants
- DRIVER_VERSION
- VERSION
Public Instance Methods
binary_path()
click to toggle source
# File lib/geckodriver/bin.rb, line 60 def binary_path exe = if platform.include?('win') 'geckodriver.exe' else 'geckodriver' end File.join platform_install_dir, exe end
download(hit_network=false)
click to toggle source
# File lib/geckodriver/bin.rb, line 20 def download hit_network=false return if File.exists?(binary_path) && !hit_network url = download_url filename = File.basename url Dir.chdir platform_install_dir do FileUtils.rm_f filename File.open(filename, 'wb') do |saved_file| URI.parse(url).open('rb') do |read_file| saved_file.write(read_file.read) end end raise "Could not download #{url}" unless File.exists? filename unpack_archive(filename) end raise "Could not unarchive #{filename} to get #{binary_path}" unless File.exists? binary_path FileUtils.chmod 'ugo+rx', binary_path end
download_url()
click to toggle source
# File lib/geckodriver/bin.rb, line 55 def download_url extension = platform.include?('win') ? 'zip' : 'tar.gz' "https://github.com/mozilla/geckodriver/releases/download/#{DRIVER_VERSION}/geckodriver-#{DRIVER_VERSION}-#{platform}.#{extension}" end
install_dir()
click to toggle source
# File lib/geckodriver/bin.rb, line 76 def install_dir dir = File.expand_path File.join(ENV['HOME'], '.geckodriver-bin') FileUtils.mkdir_p dir dir end
platform()
click to toggle source
# File lib/geckodriver/bin.rb, line 82 def platform @platform ||= begin cfg = RbConfig::CONFIG case cfg['host_os'] when /linux/ append_64_or_32('linux', cfg) when /darwin/ 'macos' else append_64_or_32('win', cfg) end end end
platform_install_dir()
click to toggle source
# File lib/geckodriver/bin.rb, line 70 def platform_install_dir dir = File.join install_dir, platform FileUtils.mkdir_p dir dir end
run(*args)
click to toggle source
# File lib/geckodriver/bin.rb, line 15 def run *args download exec binary_path, *args end
unpack_archive(file)
click to toggle source
# File lib/geckodriver/bin.rb, line 39 def unpack_archive(file) case file when /\.zip$/ unzip(file) when /\.tar\.gz$/ io = ungzip(file) untar(io) else raise "Don't know how to unpack #{file}" end end
update()
click to toggle source
# File lib/geckodriver/bin.rb, line 51 def update download true end
Private Instance Methods
append_64_or_32(platform, cfg)
click to toggle source
# File lib/geckodriver/bin.rb, line 98 def append_64_or_32(platform, cfg) cfg['host_cpu'] =~ /x86_64|amd64/ ? "#{platform}64" : "#{platform}32" end
ungzip(tarfile)
click to toggle source
# File lib/geckodriver/bin.rb, line 106 def ungzip(tarfile) z = Zlib::GzipReader.open(tarfile) unzipped = StringIO.new(z.read) z.close unzipped end
untar(io)
click to toggle source
# File lib/geckodriver/bin.rb, line 113 def untar(io) Gem::Package::TarReader.new io do |tar| tar.each do |tarfile| destination_file = tarfile.full_name File.open destination_file, 'wb' do |f| f.print tarfile.read end end end end
unzip(zipfile)
click to toggle source
# File lib/geckodriver/bin.rb, line 102 def unzip(zipfile) Archive::Zip.extract(zipfile, '.', :overwrite => :all) end