Почему неправильно требовать rubygems?

Согласно этот пост, требование rubygems является антипаттерном.

require 'rubygems'

Аргумент, кажется, сводится к следующему:

Когда я использую вашу библиотеку, развертываю ваше приложение или запускаю ваши тесты, я могу не захотеть использовать rubygems. Когда вы требуете «rubygems» в своем коде, вы лишаете меня права принимать это решение. Я не могу отказаться от rubygems, но вы не можете требовать его в первую очередь.

Но нельзя ли сказать то же самое о любой библиотеке Ruby, которая вам «требуется», когда вы создаете библиотеку кода и делитесь ею с другими людьми?


person uzo    schedule 16.09.2009    source источник


Ответы (3)


Основная проблема с требованием rubygems заключается в том, что это вызовет ошибку в системах, на которых не установлены rubygems, даже если в них есть библиотека, которая вам действительно нужна.

Некоторые люди обходят это, спасая LoadError при запросе rubygems, но это довольно уродливо.

person sepp2k    schedule 16.09.2009

Если вы посмотрите на комментарии, вы увидите, что автор говорит это

Я не пытался подчеркнуть, что rubygems — это плохо или что люди не должны его использовать. Я использую rubygems и думаю, что это важная часть успеха Ruby — у меня просто нет строки «require 'rubygems'» в исходном коде моей библиотеки, потому что это не нужно или удобно и делает это сложным/невозможным для других сред (таких как bundler, rip, GAE, debian, hand roll и т. д.), чтобы использовать библиотеку без rubygems, что часто бывает важно.

Я на самом деле не совсем соглашался с ним до того, как прочитал это, теперь я согласен

person Matt Briggs    schedule 16.09.2009

Rubygems не является обязательным для приложения, это просто удобный способ предоставления библиотеки. Напротив, другие используемые библиотеки необходимы для приложения.

person Andrew Grimm    schedule 09.11.2011