【发布时间】:2013-11-23 18:44:42
【问题描述】:
我需要使用 Ruby 从我的项目中提取文件名并从中提取第一个单词。我已经用我在这个网站上找到的解决方案进行了尝试,但没有成功:
File.basename("/path/to/folder/here_is_my_file.rb").match(/[^_]+/)
这会按预期返回 =>“这里”。
然而,我需要的是在不知道它应该是什么的情况下获取“这里”,因为文件名的第一部分是动态生成的。因此,我需要找到一种动态提取它的方法。
如何实现?
【问题讨论】:
-
如果您知道
/path/to/folder,那么您可以使用Dir类获取目录中的所有文件。看看 Ruby API:ruby-doc.org/core-2.0.0/Dir.html#method-i-each 也许有更好的方法来解决这个问题。什么是动态生成这些文件,你的用例是什么? -
文件名是项目内启动不同“作业”的条件。因此,根据文件的名称以及在系统中的位置,将调用不同的方法。
-
如果文件的名称类似于“main_file.rb”,则应调用某个方法,如果文件名称类似于“sub_file.rb”,则应调用另一个操作。
-
我不明白这些文件是如何到达那里的,Rails 是如何知道要查找它们的。如果某个守护进程正在将文件放入系统中,为什么不直接访问 Rails 堆栈,而不是使用所有必需的作业信息?
-
Dir['/path/to/folder/*_my_file.rb']将为您提供与该模式匹配的所有文件,然后您可以遍历收集的文件并提取*并检查您的条件。如果这就是你想要的。
标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0