rails 中 Net::SFTP 的多文件模式

问题描述 投票:0回答:1

在我的 Rails 应用程序中,我连接到 SFTP 并根据模式下载文件。 我的代码如下所示:

require 'net/sftp'

...

Net::SFTP.start(host, user, config) do |sftp|
 Rails.logger.info "Connected to sftp"
 sftp.dir.glob(@file_path, @file_regex) do |file|
 ...
 end
end

我需要下载 xlsx 和 csv 文件。下面是获取@file_regex的函数:

def fetch_sftp_file_format
 ist_timezone = TZInfo::Timezone.get('Asia/Kolkata')
 current_date = Time.now.in_time_zone(ist_timezone).strftime('%Y_%m_%d')
 "*_#{current_date}.xlsx"
end

此代码工作正常,但我无法同时设置 xlsx 和 csv 文件的模式。 所有文件类型的模式

"*_#{current_date}.*"
也有效。

我尝试了

"*_#{current_date}.(xlsx|csv)"
"*_#{current_date}.(xlsx|csv)$"
,但这些不起作用。

net-sftp gem 版本:4.0.0

ruby-on-rails pattern-matching sftp net-sftp
1个回答
0
投票

根据

Dir::glob
的文档:

{p,q}
- 匹配文字
p
或文字
q
。相当于正则表达式中的模式交替。”

所以你的模式应该是:

"*_#{current_date}.{xlsx,csv}"

© www.soinside.com 2019 - 2024. All rights reserved.