Skip to content

Instantly share code, notes, and snippets.

@hyoshida
Last active November 24, 2015 02:18
Show Gist options
  • Save hyoshida/b5d429558316723d1675 to your computer and use it in GitHub Desktop.
Save hyoshida/b5d429558316723d1675 to your computer and use it in GitHub Desktop.
Referencing Rails Assets in CoffeeScript
# refs: http://dennisreimann.de/blog/referencing-rails-assets-in-coffeescript/
<%
image_path_map = {}
Dir.chdir("#{Rails.root}/app/assets/images/") do
image_path_map = Dir.glob('**/*').inject({}) do |result, filepath|
next result if File::ftype(filepath) == 'directory'
result.merge(filepath => image_path(filepath))
end
end
%>
window.image_path = (name) ->
image_path = <%= image_path_map.to_json %>[name]
image_path ? name
@hyoshida
Copy link
Author

hyoshida commented Aug 8, 2014

  • CoffeeScriptからRails Assetsを利用するためのスクリプト
  • 本家が対応していなかったサブディレクトリへの探索にも対応
  • 割とゴリ押しなので、基本的には利用しない実装が好ましいと思われる

@hyoshida
Copy link
Author

production 環境で利用する場合は、下記の理由から rake assets:precompile を2回実行する必要あり。

  1. rake assets:precompile を実行する
  2. image_path.coffee がコンパイルされたアセットを認識できるようになる
  3. この状態で rake assets:precompile を実行する
  4. 3.によってすべてのアセットを含んだ image_path.js が出力される

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment