Есть ли способ вызвать ruby1.9 без загрузки rubygems? - PullRequest
8 голосов
/ 15 июля 2010

Так что ruby ​​1.9 действительно хорош тем, что для него автоматически требуются rubygems, и, следовательно, когда вы вызываете require 'somegem' без предварительного запроса rubygems, он будет работать, и это вообще здорово.

Но у меня естьтонны сценариев оболочки, использующих ruby, и они обычно не используют rubygems.Инструменты оболочки должны запускаться мгновенно, и загрузка рубинов за ненадобностью является основным перетаскиванием, главным образом потому, что включает в себя кучу операций с диском с разбросанными небольшими файлами.

Я хочу иметь возможность указать ruby ​​при запуске этих скриптов оболочки, чтобы пропустить загрузку драгоценных камней.В идеале, что-то вроде #!ruby --no-rubygems в линии Шебанга.

Есть ли такая вещь?Или, может быть, опция компиляции, которая скажет, что рубиновые рубины должны требоваться вручную?

1 Ответ

5 голосов
/ 15 июля 2010

Да, вы можете использовать опцию --disable-gems.

Обратите внимание, работает ли опция передачи в строке shebang, зависит от вашей операционной системы.Некоторые операционные системы вообще не поддерживают параметры передачи , некоторые поддерживают только передачу одного параметра или аргумента.

Итак, если у вас есть, например,

#!/usr/bin/env ruby

Тогда маловероятно, что вы сможете прикрепить опцию к концу.Если OTOH, вы меняете это значение на

#!/usr/local/bin/ruby --disable-gems

Тогда вы запрограммировали расположение двоичного файла Ruby в своем скрипте.

И, конечно, есть операционные системы, которые не интерпретируют строки Шебанга на всех .(В конце концов, они никогда не указывались ни в одном стандарте и даже не документированы должным образом.)

Альтернативой может быть установка переменной среды RUBYOPT в вашей среде оболочки и просто переключение на другую средус RUBYOPT unset (или установленным -w, моим личным фаворитом) для вашей разработки на Ruby.

...