6

Rails アプリをテストするための Rails エンジンである Konacha の場合、Sprockets が JavaScript にコンパイルできるすべてのファイルを見つける方法が必要です。

現在、次のようなものを使用しています

Dir['spec/javascripts/**/*_spec.*']

.bakしかし、これは、、、.origおよびその他のバックアップ ファイルをピックアップします。

Sprockets は、バックアップ ファイルが自動的に除外されるように、ファイルをコンパイルする方法を知っているかどうかを何らかの形で教えてくれますか?

content_type_of役に立ちません:

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

1 に答える 1

17

次のメソッドSprockets::Environmentを使用して、 のロード パス内のすべてのファイルを反復処理できます。each_file

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
于 2012-06-12T21:46:53.283 に答える