在Ruby on Rails中获取项目中的文件名

时间:2013-11-23 18:44:42

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0

我需要从我的项目中使用Ruby提取文件名并从中提取第一个单词。我已尝试使用我在此网站上找到的解决方案,但没有成功:

File.basename("/path/to/folder/here_is_my_file.rb").match(/[^_]+/)

这返回=> “在这里”如预期的那样。

然而,我需要的是在不知道它应该是什么的情况下获取“here”,因为文件名的第一部分是动态生成的。因此,我需要找到一种动态提取它的方法。

如何实现?

1 个答案:

答案 0 :(得分:1)

您需要找到路径上与模式*_file.rb匹配的文件 为此,请使用Ruby中Dir类的 globbing

matched_files = Dir['/path/to/folder/*_file.rb']
#=> ['/path/to/folder/main_file.rb', '/path/to/folder/sub_file.rb', '/path/to/folder/foo_file.rb']

现在,您可以通过迭代这些文件来提取基本名称:

base_files = matched_files.map { |file| File.basename(file) }
#=> ['main_file.rb', 'sub_file.rb', 'foo_file.rb']

此外,如果您只想从中提取主要 foo ,您可以匹配模式来执行此操作:

base_files.map { |file| file.match(/(.*)_file.rb/)[1] }
#=> ['main', 'sub', 'foo']

收集文件名后,您可以根据条件检查这些名称,以执行该文件的任何名称。

祝你好运。