Проверьте на доступность Драгоценного камня Ruby

Привет, я только что нашел, как показывать таблицы на затмении,

, если значок базы данных по-прежнему серый:

Preference -> Android -> DDMS ->

выбрать открытие в затмении вместо сохранения на диск ...

удачи :)

42
задан Andrew Grimm 12 December 2010 в 23:16
поделиться

3 ответа

ИМХО, лучший способ - это попытаться загрузить / потребовать GEM и спасти исключение, как уже показал Рэй. Можно безопасно спасти исключение LoadError, потому что оно не вызывается самим GEM, а является стандартным поведением команды require.

Вместо этого вы также можете использовать команду gem.

begin
  gem "somegem"
  # with requirements
  gem "somegem", ">=2.0"
rescue Gem::LoadError
  # not installed
end

Команда gem имеет то же поведение, что и команда require. command, с небольшими отличиями. AFAIK, он все еще пытается автозагрузить основной файл GEM.

Покопавшись в файле rubygems.rb (строка 310), я обнаружил следующее выполнение

matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
report_activate_error(gem) if matches.empty?

Оно может дать вам несколько советов о том, как сделать грязную проверку без фактической загрузки библиотека.

31
ответ дан 26 November 2019 в 23:19
поделиться

Вы можете:

begin
  require "somegem"
rescue LoadError
  # not installed
end

Однако это не скажет вам, был ли модуль установлен с помощью gem или каким-либо другим способом.

4
ответ дан 26 November 2019 в 23:19
поделиться

Там также:

Gem.available?('somegem')

Вы также можете использовать регулярные выражения. Удобно, если я хочу разрешить варианты 'rcov' и GitHub, такие как 'релевантность-rcov':

Gem.available?(/-?rcov$/)
38
ответ дан 26 November 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: