3
require 'rake/testtask'
4
require 'rake/rdoctask'
5
require 'rake/packagetask'
6
require 'rake/gempackagetask'
8
require File.join(File.dirname(__FILE__), 'lib', 'active_resource', 'version')
10
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
11
PKG_NAME = 'activeresource'
12
PKG_VERSION = ActiveResource::VERSION::STRING + PKG_BUILD
13
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
15
RELEASE_NAME = "REL #{PKG_VERSION}"
17
RUBY_FORGE_PROJECT = "activerecord"
18
RUBY_FORGE_USER = "webster132"
21
"lib/**/*", "test/**/*", "[A-Z]*", "Rakefile"
22
].exclude(/\bCVS\b|~$/)
25
task :default => [ :test ]
29
Rake::TestTask.new { |t|
30
activesupport_path = "#{File.dirname(__FILE__)}/../activesupport/lib"
31
t.libs << activesupport_path if File.directory?(activesupport_path)
33
t.pattern = 'test/**/*_test.rb'
39
# Generate the RDoc documentation
41
Rake::RDocTask.new { |rdoc|
43
rdoc.title = "Active Resource -- Object-oriented REST services"
44
rdoc.options << '--line-numbers' << '--inline-source' << '-A cattr_accessor=object'
45
rdoc.options << '--charset' << 'utf-8'
46
rdoc.template = ENV['template'] ? "#{ENV['template']}.rb" : '../doc/template/horo'
47
rdoc.rdoc_files.include('README', 'CHANGELOG')
48
rdoc.rdoc_files.include('lib/**/*.rb')
49
rdoc.rdoc_files.exclude('lib/activeresource.rb')
53
# Create compressed packages
55
dist_dirs = [ "lib", "test", "examples", "dev-utils" ]
57
spec = Gem::Specification.new do |s|
58
s.platform = Gem::Platform::RUBY
60
s.version = PKG_VERSION
61
s.summary = "Think Active Record for web resources."
62
s.description = %q{Wraps web resources in model classes that can be manipulated through XML over REST.}
64
s.files = [ "Rakefile", "README", "CHANGELOG" ]
65
dist_dirs.each do |dir|
66
s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
69
s.add_dependency('activesupport', '= 2.3.5' + PKG_BUILD)
71
s.require_path = 'lib'
72
s.autorequire = 'active_resource'
75
s.extra_rdoc_files = %w( README )
76
s.rdoc_options.concat ['--main', 'README']
78
s.author = "David Heinemeier Hansson"
79
s.email = "david@loudthinking.com"
80
s.homepage = "http://www.rubyonrails.org"
81
s.rubyforge_project = "activeresource"
84
Rake::GemPackageTask.new(spec) do |p|
91
lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
93
for file_name in FileList["lib/active_resource/**/*.rb"]
94
next if file_name =~ /vendor/
95
f = File.open(file_name)
99
next if line =~ /^\s*$/
100
next if line =~ /^\s*#/
103
puts "L: #{sprintf("%4d", lines)}, LOC #{sprintf("%4d", codelines)} | #{file_name}"
106
total_codelines += codelines
108
lines, codelines = 0, 0
111
puts "Total: Lines #{total_lines}, LOC #{total_codelines}"
115
# Publishing ------------------------------------------------------
117
desc "Publish the beta gem"
118
task :pgem => [:package] do
119
require 'rake/contrib/sshpublisher'
120
Rake::SshFilePublisher.new("gems.rubyonrails.org", "/u/sites/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
121
`ssh gems.rubyonrails.org '/u/sites/gems/gemupdate.sh'`
124
desc "Publish the API documentation"
125
task :pdoc => [:rdoc] do
126
require 'rake/contrib/sshpublisher'
127
Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/ar", "doc").upload
130
desc "Publish the release files to RubyForge."
131
task :release => [ :package ] do
134
for ext in %w( gem tgz zip )
135
release_command = "rubyforge add_release #{PKG_NAME} #{PKG_NAME} 'REL #{PKG_VERSION}' pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}"
137
system(release_command)