mirror of
https://github.com/github/rails.git
synced 2026-01-14 09:07:58 -05:00
+ Fixed deprecated usage in gemspecs. Bumped the version to 2.3.12 so I could test locally with actual installs. If this is bad form for this project, please beat me up and I'll split them out.
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
|