Ruby的`.present?`没有Rails?

时间:2018-04-17 11:48:40

标签: ruby daemon standard-library daemons ruby-daemons

我正在为自动化开发一个“无Rails”的Ruby守护进程(虽然理论上它在Rails目录中运行)。出于一般目的和问题的原则,我想找到(大多数)“本地”/常用方式来使用Ruby版本的.present? / .blank? / .empty? / { {1}}以确定数组或(哈希)值是否存在且不为空(即.nil?[])。

从我read(例如Stack Overflow)开始测试,所有这些函数似乎都是Rails特定的方法,是ActiveSupport(?)的一部分。

来自其他网络/解释器语言(PHP,Python,JS等),这是一般逻辑函数,大多数语言(大多数数组)都以这种或那种方式构建此功能(例如,PHP的{}或JavaScript的isset( ... ))。

我理解.length有RegEx解决方法,但是.blank?似乎需要异常处理才能确定它是否“存在”。我很难相信它不存在,但是在没有Rails参与的情况下,很少谈论Ruby。

2 个答案:

答案 0 :(得分:3)

Active Support分成小块,以便您可以加载您需要的内容。对于.blank?.present?方法,只需要:

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

As docs say

已定义

Object#nil?Array#empty?Hash#empty?,因此您无需require即可使用这些内容。

确保系统中安装了active_support gem

答案 1 :(得分:0)

您可以使用ActiveSupport而不在应用中包含所有rails,这实际上很常见。

nil?empty?在标准库中定义。

例如,String#empty?只是测试长度是否为0。

要使用有效支持,只需安装gem或将其添加到gemfile中:

require 'active_support'

documentation还表示您可以选择所需的核心扩展程序:

require 'active_support/core_ext/object/blank'