<% ace_gem_path = Bundler.rubygems.find_name('ace-rails-ap').first.full_gem_path ace_workers = Dir[ace_gem_path + '/vendor/assets/javascripts/ace/worker-*.js'].sort.map do |file| File.basename(file, '.js').sub(/^worker-/, '') end ace_modes = Dir[ace_gem_path + '/vendor/assets/javascripts/ace/mode-*.js'].sort.map do |file| File.basename(file, '.js').sub(/^mode-/, '') end %> // Lazy-load configuration when ace.edit is called (function() { var basePath; var ace = window.ace; var edit = ace.edit; ace.edit = function() { window.gon = window.gon || {}; basePath = (window.gon.relative_url_root || '').replace(/\/$/, '') + '/assets/ace'; ace.config.set('basePath', basePath); // configure paths for all worker modules <% ace_workers.each do |worker| %> ace.config.setModuleUrl('ace/mode/<%= worker %>_worker', basePath + '/<%= File.basename(asset_path("ace/worker-#{worker}.js")) %>'); <% end %> // configure paths for all mode modules <% ace_modes.each do |mode| %> ace.config.setModuleUrl('ace/mode/<%= mode %>', basePath + '/<%= File.basename(asset_path("ace/mode-#{mode}.js")) %>'); <% end %> // restore original method ace.edit = edit; return ace.edit.apply(ace, arguments); }; })();