2005-09-10 08:12:57 +02:00
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
$VERBOSE = nil
TEST_CHANGES_SINCE = Time . now - 600
desc " Run all the tests on a fresh test database "
task :default = > [ :test_units , :test_functional ]
desc 'Require application environment.'
task :environment do
unless defined? RAILS_ROOT
require File . dirname ( __FILE__ ) + '/config/environment'
end
end
desc " Generate API documentation, show coding stats "
task :doc = > [ :appdoc , :stats ]
desc " Run the unit tests in test/unit "
Rake :: TestTask . new ( " test_units " ) { | t |
t . libs << " test "
t . pattern = 'test/unit/**/*_test.rb'
t . verbose = true
}
desc " Run the functional tests in test/functional "
Rake :: TestTask . new ( " test_functional " ) { | t |
t . libs << " test "
t . pattern = 'test/functional/**/*_test.rb'
t . verbose = true
}
desc " Generate documentation for the application "
Rake :: RDocTask . new ( " appdoc " ) { | rdoc |
rdoc . rdoc_dir = 'doc/app'
rdoc . title = " Rails Application Documentation "
rdoc . options << '--line-numbers --inline-source'
rdoc . rdoc_files . include ( 'doc/README_FOR_APP' )
rdoc . rdoc_files . include ( 'app/**/*.rb' )
}
desc " Generate documentation for the Rails framework "
Rake :: RDocTask . new ( " apidoc " ) { | rdoc |
rdoc . rdoc_dir = 'doc/api'
rdoc . template = " #{ ENV [ 'template' ] } .rb " if ENV [ 'template' ]
rdoc . title = " Rails Framework Documentation "
rdoc . options << '--line-numbers --inline-source'
rdoc . rdoc_files . include ( 'README' )
rdoc . rdoc_files . include ( 'CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/railties/CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/railties/MIT-LICENSE' )
rdoc . rdoc_files . include ( 'vendor/rails/activerecord/README' )
rdoc . rdoc_files . include ( 'vendor/rails/activerecord/CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/activerecord/lib/active_record/**/*.rb' )
rdoc . rdoc_files . exclude ( 'vendor/rails/activerecord/lib/active_record/vendor/*' )
rdoc . rdoc_files . include ( 'vendor/rails/actionpack/README' )
rdoc . rdoc_files . include ( 'vendor/rails/actionpack/CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/actionpack/lib/action_controller/**/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionpack/lib/action_view/**/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionmailer/README' )
rdoc . rdoc_files . include ( 'vendor/rails/actionmailer/CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/actionmailer/lib/action_mailer/base.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/README' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/api/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/client/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/container/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/dispatcher/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/protocol/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/actionwebservice/lib/action_web_service/support/*.rb' )
rdoc . rdoc_files . include ( 'vendor/rails/activesupport/README' )
rdoc . rdoc_files . include ( 'vendor/rails/activesupport/CHANGELOG' )
rdoc . rdoc_files . include ( 'vendor/rails/activesupport/lib/active_support/**/*.rb' )
}
desc " Report code statistics (KLOCs, etc) from the application "
task :stats = > [ :environment ] do
require 'code_statistics'
CodeStatistics . new (
[ " Helpers " , " app/helpers " ] ,
[ " Controllers " , " app/controllers " ] ,
[ " APIs " , " app/apis " ] ,
[ " Components " , " components " ] ,
[ " Functionals " , " test/functional " ] ,
[ " Models " , " app/models " ] ,
[ " Units " , " test/unit " ]
) . to_s
end
desc " Empty the test database "
task :purge_test_database = > :environment do
abcs = ActiveRecord :: Base . configurations
case abcs [ " test " ] [ " adapter " ]
when " mysql "
ActiveRecord :: Base . establish_connection ( :test )
ActiveRecord :: Base . connection . recreate_database ( abcs [ " test " ] [ " database " ] )
when " postgresql "
ENV [ 'PGHOST' ] = abcs [ " test " ] [ " host " ] if abcs [ " test " ] [ " host " ]
ENV [ 'PGPORT' ] = abcs [ " test " ] [ " port " ] . to_s if abcs [ " test " ] [ " port " ]
ENV [ 'PGPASSWORD' ] = abcs [ " test " ] [ " password " ] . to_s if abcs [ " test " ] [ " password " ]
` dropdb -U " #{ abcs [ " test " ] [ " username " ] } " #{ abcs [ " test " ] [ " database " ] } `
` createdb -T template0 -U " #{ abcs [ " test " ] [ " username " ] } " #{ abcs [ " test " ] [ " database " ] } `
when " sqlite " , " sqlite3 "
File . delete ( abcs [ " test " ] [ " dbfile " ] ) if File . exist? ( abcs [ " test " ] [ " dbfile " ] )
when " sqlserver "
dropfkscript = " #{ abcs [ " test " ] [ " host " ] } . #{ abcs [ " test " ] [ " database " ] } .DP1 " . gsub ( / \\ / , '-' )
` osql -E -S #{ abcs [ " test " ] [ " host " ] } -d #{ abcs [ " test " ] [ " database " ] } -i db \\ #{ dropfkscript } `
` osql -E -S #{ abcs [ " test " ] [ " host " ] } -d #{ abcs [ " test " ] [ " database " ] } -i db \\ #{ RAILS_ENV } _structure.sql `
else
raise " Unknown database adapter ' #{ abcs [ " test " ] [ " adapter " ] } ' "
end
end
desc " Clears all *.log files in log/ "
task :clear_logs = > :environment do
FileList [ " log/*.log " ] . each do | log_file |
f = File . open ( log_file , " w " )
f . close
end
end
desc " Migrate the database according to the migrate scripts in db/migrate (only supported on PG/MySQL). A specific version can be targetted with VERSION=x "
task :migrate = > :environment do
ActiveRecord :: Migrator . migrate ( File . dirname ( __FILE__ ) + '/db/migrate/' , ENV [ " VERSION " ] ? ENV [ " VERSION " ] . to_i : nil )
end
task :ft = > :test_functional
2005-09-14 04:01:20 +02:00
task :ut = > :test_units