Skip to content

Instantly share code, notes, and snippets.

@ivanvanderbyl
Last active December 11, 2015 23:38
Show Gist options
  • Save ivanvanderbyl/4677835 to your computer and use it in GitHub Desktop.
Save ivanvanderbyl/4677835 to your computer and use it in GitHub Desktop.
A simple rake task to update Ember and Ember Data to a build from master. (requires ember-rails)
# A simple rake task to update Ember and Ember Data to a build from master.
#
# Assumptions:
# - You're using the `ember-rails` gem
# - You are requiring rember with sprockets with something like `require ember`
# - You have added these gems to your Gemfile:
# - gem "rake-pipeline", :git => "https://github.com/livingsocial/rake-pipeline.git"
# - gem "rake-pipeline-web-filters", :git => "https://github.com/wycats/rake-pipeline-web-filters.git"
# - gem 'colored'
#
# Usage:
#
# $ rake ember:update
#
# This will place a development build (with comments and debug tags) into:
# vendor/assets/ember/development/ember.js
# and a production non-minified build (no comments or debug tags) into:
# vendor/assets/ember/production/ember.js
#
# Written by Ivan Vanderbyl ([email protected]) December, 2012
def say(msg, &block)
print "#{msg}..."
if block_given?
quietly do
yield
end
puts " Done."
end
end
directory "tmp"
file "tmp/ember.js" => "tmp" do
cd "tmp" do
sh "git clone https://github.com/emberjs/ember.js.git"
end
end
file "tmp/ember-data.js" => "tmp" do
cd "tmp" do
sh "git clone https://github.com/emberjs/data.git ember-data.js"
end
end
task :update_ember_git => ["tmp/ember.js"] do
require 'rake-pipeline'
say "Checking out latest changes for ember.js" do
cd "tmp/ember.js" do
sh "git fetch origin"
sh "git reset --hard origin/master"
end
end
end
task :update_ember_data_git => ["tmp/ember-data.js"] do
require 'rake-pipeline'
say "Checking out latest changes for emberjs/data" do
cd "tmp/ember-data.js" do
sh "git fetch origin"
sh "git reset --hard origin/master"
end
end
end
task :cleanup_build_files do
say("Removing build files...") do
rm_f('tmp/ember.js')
rm_f('tmp/ember-data.js')
end
end
file "tmp/ember-data.js/dist/ember-data.js"
file "tmp/ember.js/dist/ember.js"
file "vendor/assets/ember/development/ember.js" => [:update_ember_git, "tmp/ember.js/dist/ember.js"] do
say "Building Ember.js" do
cd "tmp/ember.js" do
sh "rake clean dist"
end
end
say "Copying Ember.js to assets" do
cd "tmp/ember.js" do
cp "dist/ember.js", "../../vendor/assets/ember/development/ember.js"
cp "dist/ember.prod.js", "../../vendor/assets/ember/production/ember.js"
end
end
end
file "vendor/assets/ember/development/ember-data.js" => [:update_ember_data_git, "tmp/ember-data.js/dist/ember-data.js"] do
say "Building Ember Data" do
cd "tmp/ember-data.js" do
sh "rake clean dist"
end
end
say "Copying Ember Data to assets" do
cd "tmp/ember-data.js" do
cp "dist/ember-data.js", "../../vendor/assets/ember/development/ember-data.js"
cp "dist/ember-data.prod.js", "../../vendor/assets/ember/production/ember-data.js"
end
end
end
namespace :ember do
desc "Update Ember.js to master (vendor/assets/ember/development/ember.js)"
task :update => [:core, :data]
task :core => ["vendor/assets/ember/development/ember.js", :cleanup_build_files]
task :data => ["vendor/assets/ember/development/ember-data.js", :cleanup_build_files]
end
group :development do
gem "rake-pipeline", :git => "https://github.com/livingsocial/rake-pipeline.git"
gem "rake-pipeline-web-filters", :git => "https://github.com/wycats/rake-pipeline-web-filters.git"
gem 'colored'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment