Открыть файл в графическом интерфейсе с помощью Ruby в Mac OS X, желательно без system () - PullRequest
2 голосов
/ 20 февраля 2011

Есть ли какой-нибудь способ (установленный гем было бы хорошо), чтобы открыть файл в GUI на Mac OS X, очень похоже на то, что можно сделать с помощью команды оболочки open? Я знаю, что мог бы использовать функцию system() для запуска команды оболочки open, но я бы хотел этого не делать. Если все остальное терпит неудачу, конечно, я всегда мог бы вернуться к использованию system().

Ответы [ 2 ]

3 голосов
/ 20 февраля 2011

Я обнаружил, что единственно верным решением было бы использование метода system() для вызова утилиты командной строки open.

0 голосов
/ 21 февраля 2011

open, сам по себе использует список файлов Mac, которые приложение может открыть.Это может быть грязно или совершенно неправильно, поэтому я думаю, что безопаснее дать ему несколько подсказок, используя флаг -a, или вы можете в конечном итоге открыть исходный текст текстовым процессором, который редко работает хорошо.

ЕслиВы хотите открыть исходный файл в что-то вроде MacVim, TextMate, BBEdit, вы можете использовать их инструменты командной строки, mvim, mate или bbedit соответственно.Из IRB все они открывают мой ~/.bashrc файл и сразу возвращаются без результата, потому что они отсоединяются от терминала.Использование обратных тиков Руби или их эквивалента %x{}:

>> `mate ~/.bashrc` #=> ""
>> `mvim ~/.bashrc` #=> ""
>> `bbedit ~/.bashrc` #=> ""

Вы также можете использовать один из методов Open3, чтобы открывать приложения, хотя вам придетсянайдите правильный двоичный файл для вызова, если приложение не предоставляет ярлыки, такие как MacVim, TextMate или BBEdit.

Команда Mac open -a application file_to_be_opened может быть вызвана с помощью обратных тиков или %r{}.Следствия использования вышеприведенных команд выглядят следующим образом:

`open -a TextMate ~/.bashrc`

MacVim основан на кодовой базе Vim, пришедшей из мира * nix.У него есть флаг -f, который предотвращает его отсоединение от терминала, поэтому ваш код будет приостановлен в ожидании завершения работы редактора и его завершения, прежде чем он сможет продолжить работу.Это полезно на моих компьютерах с Linux, когда я проверяю файлы или пишу коммит-сообщение перед отправкой ревизий в SVN.Это работает, чтобы сделать это в IRB:

`mvim -f ~/.bashrc`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...