instiki/vendor/rails/activesupport/Rakefile
Jacques Distler 9e909d5be3 Update Rails, rails_xss and Bundler
Update Bundler to 1.0.15.
Update Rails to 2.3.12.
Update rails_xss plugin.

The latter two were the
source of a considerable
amount of grief, as rails_xss
is now MUCH stricter about what
string methods can be used.

Also made it possible to use
rake 0.9.x with Instiki. But
you probably REALLY want to use

 ruby bundle exec rake ...

instead of just saying

 rake ....
2011-06-15 00:43:38 -05:00

174 lines
5.2 KiB
Ruby

require 'rake/testtask'
require 'rdoc/task'
require 'rubygems/package_task'
require File.join(File.dirname(__FILE__), 'lib', 'active_support', 'version')
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
PKG_NAME = 'activesupport'
PKG_VERSION = ActiveSupport::VERSION::STRING + PKG_BUILD
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
RELEASE_NAME = "REL #{PKG_VERSION}"
RUBY_FORGE_PROJECT = "activesupport"
RUBY_FORGE_USER = "webster132"
task :default => :test
Rake::TestTask.new { |t|
t.libs << "test"
t.pattern = 'test/**/*_test.rb'
t.verbose = true
t.warning = true
}
# Create compressed packages
dist_dirs = [ "lib", "test"]
# Genereate the RDoc documentation
RDoc::Task.new { |rdoc|
rdoc.rdoc_dir = 'doc'
rdoc.title = "Active Support -- Utility classes and standard library extensions from Rails"
rdoc.options << '--line-numbers' << '--inline-source'
rdoc.options << '--charset' << 'utf-8'
rdoc.template = ENV['template'] ? "#{ENV['template']}.rb" : '../doc/template/horo'
rdoc.rdoc_files.include('README', 'CHANGELOG')
rdoc.rdoc_files.include('lib/active_support.rb')
rdoc.rdoc_files.include('lib/active_support/**/*.rb')
rdoc.rdoc_files.exclude('lib/active_support/vendor/*')
}
spec = Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = PKG_NAME
s.version = PKG_VERSION
s.summary = "Support and utility classes used by the Rails framework."
s.description = %q{Utility library which carries commonly used classes and goodies from the Rails framework}
s.files = [ "CHANGELOG", "README" ] + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
s.require_path = 'lib'
s.author = "David Heinemeier Hansson"
s.email = "david@loudthinking.com"
s.homepage = "http://www.rubyonrails.org"
s.rubyforge_project = "activesupport"
end
Gem::PackageTask.new(spec) do |p|
p.gem_spec = spec
p.need_tar = true
p.need_zip = true
end
desc "Publish the beta gem"
task :pgem => [:package] do
require 'rake/contrib/sshpublisher'
Rake::SshFilePublisher.new("gems.rubyonrails.org", "/u/sites/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
`ssh gems.rubyonrails.org '/u/sites/gems/gemupdate.sh'`
end
desc "Publish the API documentation"
task :pdoc => [:rdoc] do
require 'rake/contrib/sshpublisher'
Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/as", "doc").upload
end
desc "Publish the release files to RubyForge."
task :release => [ :package ] do
require 'rubyforge'
require 'rake/contrib/rubyforgepublisher'
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)
end
namespace :tzinfo do
desc "Update bundled tzinfo gem. Only copies the subset of classes and definitions required to support Rails time zone features."
task :update => ['tzinfo:copy_classes', 'tzinfo:copy_definitions'] do
Rake::Task['tzinfo:cleanup_tmp'].invoke
end
task :unpack_gem do
mkdir_p "tmp"
cd "tmp"
sh "gem unpack --version #{ENV['VERSION'] || "'> 0'"} tzinfo"
cd ".."
end
task :copy_classes => :unpack_gem do
mkdir_p "#{destination_path}/tzinfo"
cp "#{tmp_path}/lib/tzinfo.rb", destination_path
comment_requires_for_excluded_classes!('tzinfo.rb')
files = FileList["#{tmp_path}/lib/tzinfo/*.rb"]
files.each do |file|
filename = File.basename(file)
unless excluded_classes.include? filename.sub(/.rb$/, '')
cp "#{tmp_path}/lib/tzinfo/#{filename}", "#{destination_path}/tzinfo"
comment_requires_for_excluded_classes!("tzinfo/#{filename}")
end
end
end
task :copy_definitions => :unpack_gem do
$:.unshift "#{File.dirname(__FILE__)}/lib"
require 'active_support/values/time_zone'
definitions_path = "#{destination_path}/tzinfo/definitions/"
mkdir_p definitions_path
ActiveSupport::TimeZone::MAPPING.values.each do |zone|
subdir = nil
if /\// === zone
subdir = zone.sub(/\w+$/, '')
mkdir_p "#{definitions_path}/#{subdir}"
end
cp "#{tmp_path}/lib/tzinfo/definitions/#{zone}.rb", "#{definitions_path}/#{subdir}"
end
end
task :cleanup_tmp do
rm_rf "tmp"
end
def comment_requires_for_excluded_classes!(file)
lines = open("#{destination_path}/#{file}") {|f| f.readlines}
updated = false
new_lines = []
lines.each do |line|
if Regexp.new("require 'tzinfo/(#{excluded_classes.join('|')})'") === line
updated = true
new_lines << "# #{line}"
else
new_lines << line
end
end
if updated
open("#{destination_path}/#{file}", "w") {|f| f.write(new_lines.join)}
end
end
def version
ENV['VERSION'] ||= get_unpacked_version
end
def get_unpacked_version
m = (FileList["tmp/tzinfo-*"].to_s.match /\d+\.\d+\.\d+/)
m ? m[0] : raise(LoadError, "TZInfo gem must be installed locally. `gem install tzinfo` and try again")
end
def tmp_path
"tmp/tzinfo-#{version}"
end
def destination_path
"lib/active_support/vendor/tzinfo-#{version}"
end
def excluded_classes
%w(country country_index_definition country_info country_timezone timezone_index_definition timezone_proxy tzdataparser)
end
end