class Geckodriver::Helper
Constants
- VERSION
Public Instance Methods
binary_path()
click to toggle source
# File lib/geckodriver/helper.rb, line 54 def binary_path if platform == 'win' File.join platform_install_dir, 'geckodriver.exe' else File.join platform_install_dir, 'geckodriver' end end
download(hit_network=false, version='0.23.0')
click to toggle source
# File lib/geckodriver/helper.rb, line 18 def download(hit_network=false, version='0.23.0') return if File.exists?(binary_path) && !hit_network url = download_url(version) 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', :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE) 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(version)
click to toggle source
# File lib/geckodriver/helper.rb, line 50 def download_url(version) GeckoReleasePageParser.new(platform).download_url(version) end
install_dir()
click to toggle source
# File lib/geckodriver/helper.rb, line 68 def install_dir dir = File.expand_path File.join(ENV['HOME'], '.geckodriver-helper') FileUtils.mkdir_p dir dir end
platform()
click to toggle source
# File lib/geckodriver/helper.rb, line 74 def platform cfg = RbConfig::CONFIG case cfg['host_os'] when /linux/ then cfg['host_cpu'] =~ /x86_64|amd64/ ? 'linux64' : 'linux32' when /darwin/ then 'mac' else 'win' end end
platform_install_dir()
click to toggle source
# File lib/geckodriver/helper.rb, line 62 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/helper.rb, line 13 def run *args download exec binary_path, *args end
unpack_archive(file)
click to toggle source
# File lib/geckodriver/helper.rb, line 37 def unpack_archive(file) if platform == 'win' unzip(file) else io = ungzip(file) untar(io) end end
update(version='0.23.0')
click to toggle source
# File lib/geckodriver/helper.rb, line 46 def update(version='0.23.0') download(true, version) end
Private Instance Methods
ungzip(tarfile)
click to toggle source
# File lib/geckodriver/helper.rb, line 92 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/helper.rb, line 99 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/helper.rb, line 88 def unzip(zipfile) Archive::Zip.extract(zipfile, '.', :overwrite => :all) end