2005-10-15 11:00:15 -04:00
desc " Lock this application to the current gems (by unpacking them into vendor/rails) "
task :freeze_gems do
rm_rf " vendor/rails "
mkdir_p " vendor/rails "
2005-11-01 13:26:06 -05:00
deps = %w( actionpack activerecord actionmailer activesupport actionwebservice )
if version = ENV [ 'VERSION' ]
puts " Freezing to the gems for Rails #{ version } "
require 'rubygems'
2005-11-01 13:56:56 -05:00
if rails = Gem . cache . search ( 'rails' , " = #{ version } " )
2005-11-01 13:26:06 -05:00
rails . dependencies . select { | g | deps . include? g . name } . each do | g |
system " cd vendor/rails; gem unpack -v ' #{ g . version_requirements } ' #{ g . name } ; mv #{ g . name } * #{ g . name } "
end
system " cd vendor/rails; gem unpack -v '= #{ version } ' rails "
else
puts " No rails gem version #{ version } is installed. Do 'gem list rails' to see which versions you have available. "
exit
end
else
puts " Freezing to your latest Rails gems "
for gem in deps
system " cd vendor/rails; gem unpack #{ gem } "
FileUtils . mv ( Dir . glob ( " vendor/rails/ #{ gem } * " ) . first , " vendor/rails/ #{ gem } " )
end
system " cd vendor/rails; gem unpack rails "
2005-10-15 11:00:15 -04:00
end
2005-10-15 11:44:35 -04:00
FileUtils . mv ( Dir . glob ( " vendor/rails/rails* " ) . first , " vendor/rails/railties " )
2005-10-15 11:00:15 -04:00
end
2005-10-30 12:17:05 -05:00
desc " Lock this application to the Edge Rails (by exporting from Subversion). Defaults to svn HEAD; do 'rake freeze_edge REVISION=1234' to lock to a specific revision. "
2005-10-15 11:00:15 -04:00
task :freeze_edge do
2005-10-30 12:17:05 -05:00
$verbose = false
` svn --version `
unless $? . success?
$stderr . puts " ERROR: Must have subversion (svn) available in the PATH to lock this application to Edge Rails "
exit 1
end
2005-10-15 11:00:15 -04:00
rm_rf " vendor/rails "
mkdir_p " vendor/rails "
2005-10-30 12:17:05 -05:00
revision_switch = ENV [ 'REVISION' ] ? " -r #{ ENV [ 'REVISION' ] } " : ''
2005-10-15 11:00:15 -04:00
for framework in %w( railties actionpack activerecord actionmailer activesupport actionwebservice )
mkdir_p " vendor/rails/ #{ framework } "
2005-10-30 12:17:05 -05:00
system " svn export http://dev.rubyonrails.org/svn/rails/trunk/ #{ framework } /lib vendor/rails/ #{ framework } /lib #{ revision_switch } "
2005-10-15 11:00:15 -04:00
end
end
desc " Unlock this application from freeze of gems or edge and return to a fluid use of system gems "
task :unfreeze_rails do
rm_rf " vendor/rails "
2005-10-30 12:17:05 -05:00
end