require 'rake' require 'rake/testtask' require 'rake/rdoctask' $LOAD_PATH << File.join(File.dirname(__FILE__), 'lib') require 'paperclip' desc 'Default: run unit tests.' task :default => [:clean, :test] desc 'Test the paperclip plugin under all supported Rails versions.' task :all do |t| exec('rake RAILS_VERSION=2.1 && rake RAILS_VERSION=2.3 && rake RAILS_VERSION=3.0') end desc 'Test the paperclip plugin.' Rake::TestTask.new(:test) do |t| t.libs << 'lib' << 'profile' t.pattern = 'test/**/*_test.rb' t.verbose = true end desc 'Start an IRB session with all necessary files required.' task :shell do |t| chdir File.dirname(__FILE__) exec 'irb -I lib/ -I lib/paperclip -r rubygems -r active_record -r tempfile -r init' end desc 'Generate documentation for the paperclip plugin.' Rake::RDocTask.new(:rdoc) do |rdoc| rdoc.rdoc_dir = 'doc' rdoc.title = 'Paperclip' rdoc.options << '--line-numbers' << '--inline-source' rdoc.rdoc_files.include('README*') rdoc.rdoc_files.include('lib/**/*.rb') end desc 'Update documentation on website' task :sync_docs => 'rdoc' do `rsync -ave ssh doc/ dev@dev.thoughtbot.com:/home/dev/www/dev.thoughtbot.com/paperclip` end desc 'Clean up files.' task :clean do |t| FileUtils.rm_rf "doc" FileUtils.rm_rf "tmp" FileUtils.rm_rf "pkg" FileUtils.rm_rf "public" FileUtils.rm "test/debug.log" rescue nil FileUtils.rm "test/paperclip.db" rescue nil Dir.glob("paperclip-*.gem").each{|f| FileUtils.rm f } end desc 'Build the gemspec.' task :gemspec do |t| exec 'gem build paperclip.gemspec' end desc "Print a list of the files to be put into the gem" task :manifest => :clean do spec.files.each do |file| puts file end end desc "Generate a gemspec file for GitHub" task :gemspec => :clean do File.open("#{spec.name}.gemspec", 'w') do |f| f.write spec.to_ruby end end desc "Build the gem into the current directory" task :gem => :gemspec do `gem build #{spec.name}.gemspec` end