Ruby `.present?` Без Rails?

Я разрабатываю "Rails-менее" демон Ruby для автоматизации (хотя теоретически он работает в каталоге Rails). Для общих целей и принципа, я хотел бы найти (наиболее) "родной"/ распространенный способ использования версии Ruby .present?/.blank?/.empty?/.nil? определить, существует ли массив или значение (хеш) и не является ли он пустым (т. е. [] или же {}).

Из того, что я прочитал (например, переполнение стека) и протестировал, все эти функции кажутся специфичными для Rails методами, частью ActiveSupport(?).

Исходя из других языков веб / интерпретаторов (PHP, Python, JS и т. Д.), Это общая логическая функция, большинство языков (с массивами, которых большинство) имеют эту функциональность, построенную тем или иным способом (например, PHP isset( ... ) или JavaScript .length).

Я понимаю, что есть обходные пути для RegEx .blank?, но .present? кажется, что для идентификации, если это "присутствует", потребуется обработка исключений). Мне трудно поверить, что его не существует, но мало говорят о Ruby без участия Rails.

2 ответа

Решение

Active Support разбит на мелкие кусочки, так что вы можете загрузить именно то, что вам нужно. За .blank? а также .present? Для методов было бы достаточно потребовать:

require 'active_support/core_ext/object/blank.rb'

Как говорят документы.

Объект # ноль? Массив # пуст? а хэш # пустой? уже определены, так что вам ничего не нужно require использовать те.

Удостовериться active_support драгоценный камень установлен в вашей системе

Вы можете использовать ActiveSupport, не включая все рельсы в ваше приложение, это довольно часто.

nil? а также empty? определены в стандартной библиотеке.

Например, String#empty? просто тестирование, если длина равна 0.

Чтобы использовать активную поддержку, просто установите гем или добавьте его в свой гемфайл, затем:

require 'active_support'

В документации также говорится, что вы можете выбрать нужные расширения ядра:

require 'active_support/core_ext/object/blank'
Другие вопросы по тегам