链轮/轨道:查找所有文件链轮知道如何编译 [英] Sprockets/Rails: Find all files Sprockets knows how to compile

查看:13
本文介绍了链轮/轨道:查找所有文件链轮知道如何编译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于Konacha,这是一个用于测试Rails应用程序的Rails引擎,我们需要一种方法来查找链轮可以编译成JavaScript的所有文件。

现在我们使用类似

的内容
Dir['spec/javascripts/**/*_spec.*']

但这会拾取.bak.orig和其他备份文件。

链轮能否以某种方式告诉我们它是否知道如何编译文件,以便自动排除备份文件?

content_type_of无济于事:

Rails.application.assets.content_type_of('test/javascripts/foo.js.bak')
=> "application/javascript"

推荐答案

您可以使用each_file方法迭代访问Sprockets::Environment加载路径中的所有文件:

Rails.application.assets.each_file { |pathname| ... }

将使用加载路径中每个文件的完全展开路径的Pathname实例调用该块。

each_file返回Enumerator,因此您可以跳过该块,获取带有to_a的数组,或对其调用include?。例如,要检查文件是否在加载路径中:

assets = Rails.application.assets
pathname1 = Pathname.new("test/javascripts/foo.js").expand_path
pathname2 = Pathname.new("test/javascripts/foo.js.bak").expand_path
assets.each_file.include?(pathname1) # => true
assets.each_file.include?(pathname2) # => false

这篇关于链轮/轨道:查找所有文件链轮知道如何编译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆