2007-01-22 14:43:50 +01:00
require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/packagetask'
require 'rake/gempackagetask'
require 'rake/contrib/rubyforgepublisher'
require File . join ( File . dirname ( __FILE__ ) , 'lib' , 'action_pack' , 'version' )
PKG_BUILD = ENV [ 'PKG_BUILD' ] ? '.' + ENV [ 'PKG_BUILD' ] : ''
PKG_NAME = 'actionpack'
PKG_VERSION = ActionPack :: VERSION :: STRING + PKG_BUILD
PKG_FILE_NAME = " #{ PKG_NAME } - #{ PKG_VERSION } "
RELEASE_NAME = " REL #{ PKG_VERSION } "
RUBY_FORGE_PROJECT = " actionpack "
RUBY_FORGE_USER = " webster132 "
desc " Default Task "
task :default = > [ :test ]
# Run the unit tests
2007-02-09 09:04:31 +01:00
desc " Run all unit tests "
task :test = > [ :test_action_pack , :test_active_record_integration ]
Rake :: TestTask . new ( :test_action_pack ) { | t |
2007-01-22 14:43:50 +01:00
t . libs << " test "
# make sure we include the controller tests (c*) first as on some systems
# this will not happen automatically and the tests (as a whole) will error
2007-02-09 09:04:31 +01:00
t . test_files = Dir . glob ( " test/c*/**/*_test.rb " ) + Dir . glob ( " test/[ft]*/*_test.rb " )
2007-01-22 14:43:50 +01:00
# t.pattern = 'test/*/*_test.rb'
t . verbose = true
}
desc 'ActiveRecord Integration Tests'
Rake :: TestTask . new ( :test_active_record_integration ) do | t |
t . libs << " test "
t . test_files = Dir . glob ( " test/activerecord/*_test.rb " )
t . verbose = true
end
# Genereate the RDoc documentation
Rake :: RDocTask . new { | rdoc |
rdoc . rdoc_dir = 'doc'
rdoc . title = " Action Pack -- On rails from request to response "
rdoc . options << '--line-numbers' << '--inline-source'
rdoc . template = " #{ ENV [ 'template' ] } .rb " if ENV [ 'template' ]
if ENV [ 'DOC_FILES' ]
rdoc . rdoc_files . include ( ENV [ 'DOC_FILES' ] . split ( / , \ s* / ) )
else
rdoc . rdoc_files . include ( 'README' , 'RUNNING_UNIT_TESTS' , 'CHANGELOG' )
rdoc . rdoc_files . include ( 'lib/**/*.rb' )
end
}
# Create compressed packages
dist_dirs = [ " lib " , " test " , " examples " ]
spec = Gem :: Specification . new do | s |
s . platform = Gem :: Platform :: RUBY
s . name = PKG_NAME
s . version = PKG_VERSION
s . summary = " Web-flow and rendering framework putting the VC in MVC. "
s . description = %q{ Eases web-request routing, handling, and response as a half-way front, half-way page controller. Implemented with specific emphasis on enabling easy unit/integration testing that doesn't require a browser. } #'
s . author = " David Heinemeier Hansson "
s . email = " david@loudthinking.com "
s . rubyforge_project = " actionpack "
s . homepage = " http://www.rubyonrails.org "
s . has_rdoc = true
s . requirements << 'none'
2007-02-09 09:04:31 +01:00
s . add_dependency ( 'activesupport' , '= 1.4.1' + PKG_BUILD )
2007-01-22 14:43:50 +01:00
s . require_path = 'lib'
s . autorequire = 'action_controller'
2007-02-09 09:04:31 +01:00
s . files = [ " Rakefile " , " install.rb " , " README " , " RUNNING_UNIT_TESTS " , " CHANGELOG " , " MIT-LICENSE " , " examples/.htaccess " ]
2007-01-22 14:43:50 +01:00
dist_dirs . each do | dir |
s . files = s . files + Dir . glob ( " #{ dir } /**/* " ) . delete_if { | item | item . include? ( " \ .svn " ) }
end
s . files . delete " examples/benchmark.rb "
s . files . delete " examples/benchmark_with_ar.fcgi "
end
Rake :: GemPackageTask . new ( spec ) do | p |
p . gem_spec = spec
p . need_tar = true
p . need_zip = true
end
task :lines do
lines , codelines , total_lines , total_codelines = 0 , 0 , 0 , 0
for file_name in FileList [ " lib/**/*.rb " ]
next if file_name =~ / vendor /
f = File . open ( file_name )
while line = f . gets
lines += 1
next if line =~ / ^ \ s*$ /
next if line =~ / ^ \ s* # /
codelines += 1
end
puts " L: #{ sprintf ( " %4d " , lines ) } , LOC #{ sprintf ( " %4d " , codelines ) } | #{ file_name } "
total_lines += lines
total_codelines += codelines
lines , codelines = 0 , 0
end
puts " Total: Lines #{ total_lines } , LOC #{ total_codelines } "
end
# Publishing ------------------------------------------------------
task :update_scriptaculous do
for js in %w( controls dragdrop effects )
system ( " svn export --force http://dev.rubyonrails.org/svn/rails/spinoffs/scriptaculous/src/ #{ js } .js #{ File . dirname ( __FILE__ ) } /lib/action_view/helpers/javascripts/ #{ js } .js " )
end
end
desc " Updates actionpack to the latest version of the javascript spinoffs "
task :update_js = > [ :update_scriptaculous ]
# Publishing ------------------------------------------------------
desc " Publish the API documentation "
task :pgem = > [ :package ] do
Rake :: SshFilePublisher . new ( " davidhh@wrath.rubyonrails.org " , " public_html/gems/gems " , " pkg " , " #{ PKG_FILE_NAME } .gem " ) . upload
` ssh davidhh@wrath.rubyonrails.org './gemupdate.sh' `
end
desc " Publish the API documentation "
task :pdoc = > [ :rdoc ] do
Rake :: SshDirPublisher . new ( " davidhh@wrath.rubyonrails.org " , " public_html/ap " , " doc " ) . upload
end
desc " Publish the release files to RubyForge. "
task :release = > [ :package ] do
` rubyforge login `
for ext in %w( gem tgz zip )
release_command = " rubyforge add_release #{ PKG_NAME } #{ PKG_NAME } 'REL #{ PKG_VERSION } ' pkg/ #{ PKG_NAME } - #{ PKG_VERSION } . #{ ext } "
puts release_command
system ( release_command )
end
end