-
-
Save naan/5096056 to your computer and use it in GitHub Desktop.
# config/initializers/source_maps.rb | |
if Rails.env.development? | |
module CoffeeScript | |
class SourceMapError < StandardError; end; | |
class << self | |
def compile script, options | |
script = script.read if script.respond_to?(:read) | |
if options.key?(:no_wrap) and !options.key?(:bare) | |
options[:bare] = options[:no_wrap] | |
else | |
options[:bare] = false | |
end | |
# adding source mapss option. (source maps option requires filename option.) | |
options[:sourceMap] = true | |
options[:filename] = options[:pathname].basename.to_s | |
ret = Source.context.call("CoffeeScript.compile", script, options) | |
map_dir = Rails.root.join("public/source_maps") | |
map_dir.mkpath | |
basename = options[:pathname].basename('.coffee') | |
map_file = map_dir.join "#{basename}.map" | |
coffee_file = map_dir.join "#{basename}.coffee" | |
# workaround for missing filename | |
source_map = JSON.load(ret["v3SourceMap"]) | |
source_map["sources"][0] = options[:filename] | |
coffee_file.open('w') {|f| f.puts script } | |
map_file.open('w') {|f| f.puts source_map.to_json} | |
comment = "\n/*\n//@ sourceMappingURL=/source_maps/#{map_file.basename}\n*/\n" | |
return ret["js"] + comment | |
end | |
end | |
end | |
# Monkeypatch this method to include the scripts' pathname | |
require 'tilt/template' | |
module Tilt | |
class CoffeeScriptTemplate < Template | |
def evaluate(scope, locals, &block) | |
@output ||= CoffeeScript.compile(data, options.merge(:pathname => scope.pathname)) | |
end | |
end | |
end | |
end |
@naan guess what! @markbates just turned this into a gem for rails https://github.com/markbates/coffee-rails-source-maps
💖
anyone having trouble with this: it stopped working for me recently, until I upgraded from sprockets 2.2.2 to 2.2.2.backport1.
Updated for fixing issues of un-match line number and missing map file.
@bsomike @naan, @markbates Why is the gem of @markbates saying DO NOT USE THIS? Is there another repository which I should use?
I also want to know what is the status of the project. All tutorials I read on source mapping coffeescript used the gem. Is it deprecated due to updated functionality in rails/sprockets/etc...? The repo doesn't give us any information.
also would like to know the status of this ...so far with rails 4..2.4 and ruby 2.2.0 but never seen the maps generated.
@naan beautiful! thanks!
@markbates it's coming: rails/coffee-rails#40