Skip to content

Instantly share code, notes, and snippets.

@qoobaa
Created December 25, 2010 17:03
Show Gist options
  • Save qoobaa/754952 to your computer and use it in GitHub Desktop.
Save qoobaa/754952 to your computer and use it in GitHub Desktop.
Patching Rails and gems locally
namespace :patch do
desc "Applies patches to Rails frozen in vendor"
task :rails do
rails_dir = Rails.root.join("vendor", "rails")
Rails.root.join("patch", "rails").children.each do |patch|
patch(patch, rails_dir)
end
end
desc "Applies patches to gems frozen in vendor"
task :gems do
Rails.root.join("patch", "gems").children.each do |patch_dir|
patch_dir.children.each do |patch|
gem_dir = Rails.root.join("vendor", "gems", patch_dir.basename)
patch(patch, gem_dir)
end
end
end
desc "Applies patches to Rails and gems in vendor"
task :all => ["gems", "rails"]
end
def patch(patch, dir)
puts "Applying patch #{patch.basename} to #{dir.basename}"
sh "patch -N -p 1 -d #{dir} -i #{patch}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment