2004-11-24 09:04:44 +08:00
require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/packagetask'
require 'rake/gempackagetask'
2008-03-18 12:46:51 +08:00
require 'rake/contrib/sshpublisher'
2005-10-10 22:33:44 +08:00
require File . join ( File . dirname ( __FILE__ ) , 'lib' , 'action_pack' , 'version' )
2004-11-24 09:04:44 +08:00
PKG_BUILD = ENV [ 'PKG_BUILD' ] ? '.' + ENV [ 'PKG_BUILD' ] : ''
PKG_NAME = 'actionpack'
2005-11-17 08:32:16 +08:00
PKG_VERSION = ActionPack :: VERSION :: STRING + PKG_BUILD
2004-11-24 09:04:44 +08:00
PKG_FILE_NAME = " #{ PKG_NAME } - #{ PKG_VERSION } "
2005-03-27 21:33:54 +08:00
RELEASE_NAME = " REL #{ PKG_VERSION } "
RUBY_FORGE_PROJECT = " actionpack "
RUBY_FORGE_USER = " webster132 "
2004-11-24 09:04:44 +08:00
desc " Default Task "
task :default = > [ :test ]
# Run the unit tests
2006-08-30 12:51:11 +08:00
desc " Run all unit tests "
2006-08-22 12:38:03 +08:00
task :test = > [ :test_action_pack , :test_active_record_integration ]
Rake :: TestTask . new ( :test_action_pack ) { | t |
2004-11-24 09:04:44 +08:00
t . libs << " test "
2008-02-16 11:08:05 +08:00
# make sure we include the tests in alphabetical order as on some systems
2005-01-11 06:58:06 +08:00
# this will not happen automatically and the tests (as a whole) will error
2008-02-16 11:08:05 +08:00
t . test_files = Dir . glob ( " test/[cft]*/**/*_test.rb " ) . sort
2005-01-11 06:58:06 +08:00
# t.pattern = 'test/*/*_test.rb'
2004-11-24 09:04:44 +08:00
t . verbose = true
2008-09-09 17:58:34 +08:00
t . warning = true
2004-11-24 09:04:44 +08:00
}
2006-02-09 17:17:40 +08:00
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
2004-11-24 09:04:44 +08:00
# Genereate the RDoc documentation
Rake :: RDocTask . new { | rdoc |
rdoc . rdoc_dir = 'doc'
rdoc . title = " Action Pack -- On rails from request to response "
2006-03-28 11:19:27 +08:00
rdoc . options << '--line-numbers' << '--inline-source'
2007-05-29 06:55:14 +08:00
rdoc . options << '--charset' << 'utf-8'
2008-06-23 01:38:25 +08:00
rdoc . template = ENV [ 'template' ] ? " #{ ENV [ 'template' ] } .rb " : '../doc/template/horo'
2006-04-28 02:22:20 +08:00
if ENV [ 'DOC_FILES' ]
rdoc . rdoc_files . include ( ENV [ 'DOC_FILES' ] . split ( / , \ s* / ) )
else
rdoc . rdoc_files . include ( 'README' , 'RUNNING_UNIT_TESTS' , 'CHANGELOG' )
2008-06-19 11:09:48 +08:00
rdoc . rdoc_files . include ( Dir [ 'lib/**/*.rb' ] -
2008-06-19 11:16:02 +08:00
Dir [ 'lib/*/vendor/**/*.rb' ] )
rdoc . rdoc_files . exclude ( 'lib/actionpack.rb' )
2006-04-28 02:22:20 +08:00
end
2004-11-24 09:04:44 +08:00
}
# Create compressed packages
2007-09-10 01:55:26 +08:00
dist_dirs = [ " lib " , " test " ]
2004-11-24 09:04:44 +08:00
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. "
2005-02-15 23:57:44 +08:00
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. } #'
2004-11-24 09:04:44 +08:00
s . author = " David Heinemeier Hansson "
s . email = " david@loudthinking.com "
s . rubyforge_project = " actionpack "
2005-01-04 20:35:10 +08:00
s . homepage = " http://www.rubyonrails.org "
2004-11-24 09:04:44 +08:00
s . has_rdoc = true
s . requirements << 'none'
2005-02-15 23:57:44 +08:00
2008-06-01 08:03:03 +08:00
s . add_dependency ( 'activesupport' , '= 2.1.0' + PKG_BUILD )
2005-02-15 23:57:44 +08:00
2004-11-24 09:04:44 +08:00
s . require_path = 'lib'
s . autorequire = 'action_controller'
2007-09-10 01:55:26 +08:00
s . files = [ " Rakefile " , " install.rb " , " README " , " RUNNING_UNIT_TESTS " , " CHANGELOG " , " MIT-LICENSE " ]
2004-11-24 09:04:44 +08:00
dist_dirs . each do | dir |
2004-11-26 00:31:27 +08:00
s . files = s . files + Dir . glob ( " #{ dir } /**/* " ) . delete_if { | item | item . include? ( " \ .svn " ) }
2004-11-24 09:04:44 +08:00
end
end
Rake :: GemPackageTask . new ( spec ) do | p |
p . gem_spec = spec
p . need_tar = true
p . need_zip = true
end
2005-04-13 13:06:40 +08:00
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
2005-07-02 14:23:35 +08:00
# Publishing ------------------------------------------------------
task :update_scriptaculous do
2006-03-05 01:12:03 +08:00
for js in %w( controls dragdrop effects )
2006-03-07 03:45:02 +08:00
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 " )
2006-03-05 01:12:03 +08:00
end
2005-07-02 14:23:35 +08:00
end
desc " Updates actionpack to the latest version of the javascript spinoffs "
2006-03-05 01:12:03 +08:00
task :update_js = > [ :update_scriptaculous ]
2004-11-24 09:04:44 +08:00
2005-03-27 21:33:54 +08:00
# Publishing ------------------------------------------------------
2004-11-24 09:04:44 +08:00
desc " Publish the API documentation "
task :pgem = > [ :package ] do
2008-06-19 10:56:22 +08:00
Rake :: SshFilePublisher . new ( " wrath.rubyonrails.org " , " public_html/gems/gems " , " pkg " , " #{ PKG_FILE_NAME } .gem " ) . upload
` ssh wrath.rubyonrails.org './gemupdate.sh' `
2004-11-24 09:04:44 +08:00
end
desc " Publish the API documentation "
task :pdoc = > [ :rdoc ] do
2008-06-19 10:56:22 +08:00
Rake :: SshDirPublisher . new ( " wrath.rubyonrails.org " , " public_html/ap " , " doc " ) . upload
2004-11-24 09:04:44 +08:00
end
2005-03-27 21:33:54 +08:00
desc " Publish the release files to RubyForge. "
2006-04-10 06:14:08 +08:00
task :release = > [ :package ] do
2007-04-22 01:06:16 +08:00
require 'rubyforge'
2007-12-27 19:17:34 +08:00
require 'rake/contrib/rubyforgepublisher'
2005-03-27 21:33:54 +08:00
2007-04-22 01:06:16 +08:00
packages = %w( gem tgz zip ) . collect { | ext | " pkg/ #{ PKG_NAME } - #{ PKG_VERSION } . #{ ext } " }
rubyforge = RubyForge . new
rubyforge . login
rubyforge . add_release ( PKG_NAME , PKG_NAME , " REL #{ PKG_VERSION } " , * packages )
2007-10-05 13:20:37 +08:00
end