我正在开发一个用于自动化的"无Rails"Ruby守护进程(尽管理论上它在Rails目录中运行)。出于一般目的和问题的原则,我想找到(大多数)"本机"/常用方法来利用.present?
/.blank?
/.empty?
/.nil?
的 Ruby 版本来确定数组或(哈希)值是否存在并且不为空(即[]
或{}
)。
从我所阅读的内容(例如,Stack Overflow)和测试来看,所有这些函数似乎是特定于Rails的方法,是ActiveSupport(?)的一部分。
来自其他Web/解释器语言(PHP,Python,JS等),这是一个通用逻辑函数,大多数语言(大多数是数组)都以某种方式构建了此功能(例如,PHP的isset( ... )
或JavaScript的.length
)。
我知道.blank?
有正则表达式的解决方法,但似乎.present?
需要异常处理来确定它是否"存在")。我很难相信它不存在,但是如果没有Rails的参与,很少有人谈论Ruby。
Active Support
被分解成小块,以便您可以加载所需的内容。对于.blank?
和.present?
方法,只需满足以下条件就足够了:
require 'active_support/core_ext/object/blank.rb'
正如文档所说。
已经定义了 Object#nil?、Array#empty? 和 Hash#empty?,因此您无需require
任何内容即可使用这些内容。
确保系统中安装了active_support
gem
您可以使用ActiveSupport,而无需在应用程序中包含所有边栏,这实际上很常见。
nil?
和empty?
在标准库中定义。
例如,String#empty?
只是测试长度是否为 0。
要使用主动支持,只需安装 gem 或将其添加到您的 gem 文件中,然后:
require 'active_support'
该文档还指出,您可以选择所需的核心扩展:
require 'active_support/core_ext/object/blank'