9e909d5be3
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 ....
175 lines
5.2 KiB
Ruby
175 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
|