Откройте браузер по умолчанию в Ruby

В Python вы можете сделать это:

import webbrowser
webbrowser.open_new("http://example.com/")

Он откроет переданный URL-адрес в браузере по умолчанию.

Есть ли рубиновый эквивалент?


person Gareth Simpson    schedule 30.09.2008    source источник


Ответы (9)


Кроссплатформенное решение:

Сначала установите гем Launchy:

$ gem install launchy

Затем вы можете запустить это:

require 'launchy'

Launchy.open("http://stackoverflow.com")
person Ryan McGeary    schedule 30.09.2008
comment
Это не работает с URL-адресами данных. (У вас есть возможность работать с URL-адресами данных? Если нет, есть другое предложение?) - person JellicleCat; 26.08.2011
comment
Теоретически он должен работать с любой схемой, зарегистрированной в операционной системе. URI данных обычно не регистрируются в ОС. - person Ryan McGeary; 13.01.2012
comment
Можете ли вы сказать мне, могу ли я проверить, закрыт ли открытый URL-адрес с помощью launchy или нет? @РайанМакГири - person Harshit Laddha; 28.04.2014
comment
@deadman нет - хотя вы можете использовать javascript или плагин для вызова сервера, который сообщает программе (вероятно, излишество) - person Ben Aubin; 25.01.2016
comment
17.06.2016 - ссылка не работает - не знаю, временно ли она отключена, ушла сейчас или переехала. Однако github.com/copiousfreetime/launchy работает. - person PressingOnAlways; 17.06.2016

Это должно работать на большинстве платформ:

link = "Insert desired link location here"
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
  system "start #{link}"
elsif RbConfig::CONFIG['host_os'] =~ /darwin/
  system "open #{link}"
elsif RbConfig::CONFIG['host_os'] =~ /linux|bsd/
  system "xdg-open #{link}"
end
person user1931928    schedule 27.12.2012
comment
Это здорово, спасибо! Только не забудьте заключить эти строки в кавычки на случай, если есть метасимволы, которые могут запутать оболочку — классическим примером является & в строке запроса URL. Заключите URL-адрес в одинарные кавычки для Mac, Linux и BSD; двойные кавычки для Windows. В Windows: требуется дополнительная пара двойных кавычек (т.е., system "start \"\" \"#{link}\"") из-за особенностей способа, которым start обрабатывает аргументы в кавычках. - person TheDudeAbides; 31.07.2020

Решение только для Mac:

system("open", "http://stackoverflow.com/")

or

`open http://stackoverflow.com/`
person Ryan McGeary    schedule 30.09.2008

Самое простое решение Win:

`start http://www.example.com`
person James Baker    schedule 30.09.2008

Решение только для Linux

system("xdg-open", "http://stackoverflow.com/")
person damage3025    schedule 03.10.2012

Это также работает:

system("start #{link}")
person palmsey    schedule 30.09.2008
comment
Обратите внимание, что это решение только для Windows. - person Ryan McGeary; 30.09.2008

Только решение для Windows:

require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute(...)

Выполнение оболочки в MSDN

person Ken    schedule 30.09.2008

Вы можете использовать гем 'os': https://github.com/rdp/os, чтобы разрешить ваша операционная система (в лучшем случае ваша ОС, то есть не OS X) решает, что делать с URL-адресом.

Как правило, это будет хороший выбор.

require 'os'
system(OS.open_file_command, 'https://stackoverflow.com')
# ~ like `xdg-open stackoverflow.com` on most modern unixoids,
# but should work on most other operating systems, too.
person Felix    schedule 14.11.2019
comment
Единственное решение, которое сработало для меня с различными параметрами в URL-адресе. - person Yoni; 03.01.2021

Если это Windows и IE, попробуйте следующее: http://rubyonwindows.blogspot.com/search/label/watir также проверьте Selenium ruby: http://selenium.rubyforge.org/getting-started.html

ХТН

person Zsolt Botykai    schedule 30.09.2008
comment
Дело в том, что вам не нужно гадать, какой браузер по умолчанию. Если бы это был IE, не было бы вопроса, что делать. - person Adriano Varoli Piazza; 01.10.2008