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

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

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

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

这会按预期返回 =>“此处”。

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

如何实现?

最佳答案

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

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']

另外,如果你只是想从中提取ma​​insubfoo,你可以匹配模式来做到这一点:

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

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

祝你好运。

关于ruby-on-rails - 在 Ruby on Rails 中获取项目中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166352/

相关文章:

ruby-on-rails - 使用 Procfile 开始在 Heroku 上使用 Rails

ruby-on-rails - 仅对 json 请求禁用 ActionController::InvalidAuthenticityToken?

ruby-on-rails - 这些 unicorn 进程是什么?或者他们是线程?

ruby-on-rails - 如何在 Ruby on Rails 中获取人类可读的类名?

ruby-on-rails - StoreController 中的 NoMethodError#display_cart

ruby-on-rails - 在Rails中缓存Twitter API调用

html - 如何在 Ruby on Rails 应用程序中更改 Index.html 的头部部分?

ruby - 如何在 Ruby 中创建 OpenGL 3.x 或 4.x 上下文?

ruby-on-rails - 我怎么知道我是否在使用 rbenv

ruby-on-rails-4 - apache 错误 "Could not download..."的乘客