require 'nokogiri' namespace :ember_cli_rails do desc "compile ember and update application.html.erb with ENV vars" task :build => [:ember, :update_env] do end desc 'Build ember app and copies css and js files to rails' task :ember do sh 'cd ember-app && ember build && cd ../' sh 'rm app/assets/stylesheets/application.css' sh 'rm app/assets/javascripts/application.js' sh 'cp ember-app/dist/assets/app.css app/assets/stylesheets/application.css' sh 'cp ember-app/dist/assets/app.js app/assets/javascripts/application.js' end desc "copy ember env from ember-cli to application.html.erb" task :update_env do app_file_path = 'app/views/layouts/application.html.erb' tmp_file_path = 'app/views/layouts/application_template.html' ember_file = 'ember-app/dist/index.html' data = File.open(ember_file, "rb") {|io| io.read} doc = Nokogiri::HTML(data) env_data = '' doc.css('script').each do |s| if s.content.match(/window\.ENV/) env_data = s.content.strip break end end puts '!!!!!! No window.ENV found' if env_data == '' app_file_data = File.open(tmp_file_path, 'rb') {|io| io.read } app_file_data = app_file_data.gsub(/{{EMBER-ENV}}/, env_data) File.open(app_file_path, 'w') {|io| io.write(app_file_data) } end desc "create boiler plate application_template.html file to be used to generate application.html.erb" task :application_template do data = <<-CODE ember_cli_rails <%= stylesheet_link_tag "application", media: "all" %> <%= csrf_meta_tags %> <%= yield %> <%# from ember-cli %> <%= javascript_include_tag "application" %> <%# from ember-cli %> CODE template_path = 'app/views/layouts/application_template.html' File.open(template_path, 'w') {|io| io.write data} puts "created #{template_path}" end end