From db045dbbf60b53dbe013ef25554fd013baf88134 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 24 Nov 2004 01:04:44 +0000 Subject: Initial git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/Rakefile | 279 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 railties/Rakefile (limited to 'railties/Rakefile') diff --git a/railties/Rakefile b/railties/Rakefile new file mode 100644 index 0000000000..aef5a4e884 --- /dev/null +++ b/railties/Rakefile @@ -0,0 +1,279 @@ +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' +require 'rake/gempackagetask' +require 'rake/contrib/rubyforgepublisher' + +require 'date' + + +PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : '' +PKG_NAME = 'rails' +PKG_VERSION = '0.8.5' + PKG_BUILD +PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" +PKG_DESTINATION = ENV["RAILS_PKG_DESTINATION"] || "../#{PKG_NAME}" + +desc "Default Task" +task :default => [ :fresh_rails ] + +desc "Generates a fresh Rails package with documentation" +task :fresh_rails => [ :make_dir_structure, :initialize_file_stubs, :copy_vendor_libraries, :copy_ties_content, :generate_documentation ] + +desc "Generates a fresh Rails package using GEMs with documentation" +task :fresh_gem_rails => [ :make_dir_structure, :initialize_file_stubs, :copy_ties_content, :copy_gem_environment ] + +desc "Generates a fresh Rails package without documentation (faster)" +task :fresh_rails_without_docs => [ :make_dir_structure, :initialize_file_stubs, :copy_vendor_libraries, :copy_ties_content ] + +desc "Packages the fresh Rails package with documentation" +task :package => [ :clean, :fresh_rails ] do + system %{cd ..; tar -czvf #{PKG_NAME}-#{PKG_VERSION}.tgz #{PKG_NAME}} + system %{cd ..; zip -r #{PKG_NAME}-#{PKG_VERSION}.zip #{PKG_NAME}} +end + +task :clean do + File.rm_rf "#{PKG_DESTINATION}" +end + + +# Make directory structure ---------------------------------------------------------------- + +desc "Make the directory structure for the new Rails application" +task :make_dir_structure => [ :make_base_dirs, :make_app_dirs, :make_public_dirs, :make_test_dirs ] do +end + +task :make_base_dirs do + File.rm_rf PKG_DESTINATION + File.mkdir "#{PKG_DESTINATION}" + File.mkdir "#{PKG_DESTINATION}/app" + File.mkdir "#{PKG_DESTINATION}/config" + File.mkdir "#{PKG_DESTINATION}/config/environments" + File.mkdir "#{PKG_DESTINATION}/db" + File.mkdir "#{PKG_DESTINATION}/doc" + File.mkdir "#{PKG_DESTINATION}/log" + File.mkdir "#{PKG_DESTINATION}/lib" + File.mkdir "#{PKG_DESTINATION}/public" + File.mkdir "#{PKG_DESTINATION}/script" + File.mkdir "#{PKG_DESTINATION}/test" + File.mkdir "#{PKG_DESTINATION}/vendor" +end + +task :make_app_dirs do + File.mkdir "#{PKG_DESTINATION}/app/models" + File.mkdir "#{PKG_DESTINATION}/app/controllers" + File.mkdir "#{PKG_DESTINATION}/app/helpers" + File.mkdir "#{PKG_DESTINATION}/app/views" + File.mkdir "#{PKG_DESTINATION}/app/views/layouts" +end + +task :make_public_dirs do + File.mkdir "#{PKG_DESTINATION}/public/images" + File.mkdir "#{PKG_DESTINATION}/public/javascripts" + File.mkdir "#{PKG_DESTINATION}/public/stylesheets" + File.mkdir "#{PKG_DESTINATION}/public/_doc" +end + +task :make_test_dirs do + File.mkdir "#{PKG_DESTINATION}/test/fixtures" + File.mkdir "#{PKG_DESTINATION}/test/unit" + File.mkdir "#{PKG_DESTINATION}/test/functional" + File.mkdir "#{PKG_DESTINATION}/test/mocks/development" + File.mkdir "#{PKG_DESTINATION}/test/mocks/testing" +end + + +# Initialize file stubs ------------------------------------------------------------------- + +desc "Initialize empty file stubs (such as for logging)" +task :initialize_file_stubs => [ :initialize_log_files ] do +end + +task :initialize_log_files do + chmod 0777, "#{PKG_DESTINATION}/log" + + File.touch "#{PKG_DESTINATION}/log/apache.log" + File.touch "#{PKG_DESTINATION}/log/production.log" + + chmod 0777, "#{PKG_DESTINATION}/log/apache.log" + chmod 0777, "#{PKG_DESTINATION}/log/production.log" +end + + +# Copy Vendors ---------------------------------------------------------------------------- + +desc "Copy in all the Rails packages to vendor" +task :copy_vendor_libraries => [ :copy_action_pack, :copy_active_record, :copy_ties, :copy_action_mailer ] + +task :copy_action_pack do + File.cp_r "../actionpack", "#{PKG_DESTINATION}/vendor/actionpack" +end + +task :copy_active_record do + File.cp_r "../activerecord", "#{PKG_DESTINATION}/vendor/activerecord" +end + +task :copy_action_mailer do + File.cp_r "../actionmailer", "#{PKG_DESTINATION}/vendor/actionmailer" +end + +task :copy_ties do + File.cp_r "../railties", "#{PKG_DESTINATION}/vendor/railties" +end + + +# Copy Ties Content ----------------------------------------------------------------------- + +# :link_apache_config +desc "Make copies of all the default content of ties" +task :copy_ties_content => [ + :copy_rootfiles, :copy_dispatches, :copy_html_files, :copy_abstract_application, + :copy_configs, :copy_generators, :copy_test_helpers, :copy_docs_in_public, + :copy_app_doc_readme ] do +end + +task :copy_dispatches do + File.cp "dispatches/dispatch.rb", "#{PKG_DESTINATION}/public/dispatch.rb" + chmod 0755, "#{PKG_DESTINATION}/public/dispatch.rb" + + File.cp "dispatches/dispatch.rb", "#{PKG_DESTINATION}/public/dispatch.cgi" + chmod 0755, "#{PKG_DESTINATION}/public/dispatch.cgi" + + File.cp "dispatches/dispatch.fcgi", "#{PKG_DESTINATION}/public/dispatch.fcgi" + chmod 0755, "#{PKG_DESTINATION}/public/dispatch.fcgi" + + File.cp "dispatches/dispatch.servlet", "#{PKG_DESTINATION}/public/dispatch.servlet" + + File.cp "dispatches/start_server", "#{PKG_DESTINATION}/start_server" + chmod 0755, "#{PKG_DESTINATION}/start_server" +end + +task :copy_html_files do + File.cp "html/404.html", "#{PKG_DESTINATION}/public/404.html" + File.cp "html/500.html", "#{PKG_DESTINATION}/public/500.html" + File.cp "html/index.html", "#{PKG_DESTINATION}/public/index.html" +end + +task :copy_abstract_application do + File.cp "helpers/abstract_application.rb", "#{PKG_DESTINATION}/app/controllers/abstract_application.rb" + File.cp "helpers/application_helper.rb", "#{PKG_DESTINATION}/app/helpers/application_helper.rb" +end + +task :copy_configs do + File.cp "configs/database.yml", "#{PKG_DESTINATION}/config/database.yml" + + File.cp "configs/apache.conf", "#{PKG_DESTINATION}/public/.htaccess" + + File.cp "environments/shared.rb", "#{PKG_DESTINATION}/config/environment.rb" + File.cp "environments/production.rb", "#{PKG_DESTINATION}/config/environments/production.rb" + File.cp "environments/development.rb", "#{PKG_DESTINATION}/config/environments/development.rb" + File.cp "environments/test.rb", "#{PKG_DESTINATION}/config/environments/test.rb" +end + +task :copy_generators do + File.cp "generators/new_controller.rb", "#{PKG_DESTINATION}/script/new_controller" + File.cp "generators/new_model.rb", "#{PKG_DESTINATION}/script/new_model" + File.cp "generators/new_mailer.rb", "#{PKG_DESTINATION}/script/new_mailer" + File.cp "generators/new_crud.rb", "#{PKG_DESTINATION}/script/new_crud" + chmod 0755, "#{PKG_DESTINATION}/script/new_controller" + chmod 0755, "#{PKG_DESTINATION}/script/new_model" + chmod 0755, "#{PKG_DESTINATION}/script/new_mailer" + chmod 0755, "#{PKG_DESTINATION}/script/new_crud" +end + +task :copy_rootfiles do + File.cp "fresh_rakefile", "#{PKG_DESTINATION}/Rakefile" + File.cp "README", "#{PKG_DESTINATION}/README" +end + +task :copy_test_helpers do + File.cp "helpers/test_helper.rb", "#{PKG_DESTINATION}/test/test_helper.rb" +end + +task :copy_docs_in_public do + File.cp "doc/index.html", "#{PKG_DESTINATION}/public/_doc/index.html" +end + +task :copy_app_doc_readme do + File.cp "doc/README_FOR_APP", "#{PKG_DESTINATION}/doc/README_FOR_APP" +end + +task :link_apache_config do + cd "#{PKG_DESTINATION}/config/" + ln_s "../public/.htaccess", "apache.conf" + cd "../../railties" +end + + +# Generate documentation ------------------------------------------------------------------ + +desc "Generate documentation for the framework and for the empty application" +task :generate_documentation => [ :generate_app_doc, :generate_rails_framework_doc ] do +end + +task :generate_rails_framework_doc do + system %{cd #{PKG_DESTINATION}; rake apidoc} +end + +task :generate_app_doc do + File.cp "doc/README_FOR_APP", "#{PKG_DESTINATION}/doc/README_FOR_APP" + system %{cd #{PKG_DESTINATION}; rake appdoc} +end + + +# Generate GEM ---------------------------------------------------------------------------- + +task :copy_gem_environment do + File.cp "environments/shared_for_gem.rb", "#{PKG_DESTINATION}/config/environment.rb" +end + + +PKG_FILES = FileList[ + '[a-zA-Z]*', + 'bin/**/*', + 'configs/**/*', + 'doc/**/*', + 'dispatches/**/*', + 'environments/**/*', + 'generators/**/*', + 'helpers/**/*', + 'html/**/*', + 'lib/**/*' +] + +spec = Gem::Specification.new do |s| + s.name = 'rails' + s.version = PKG_VERSION + s.summary = "Web-application framework with template engine, control-flow layer, and ORM." + s.description = <<-EOF + Rails is a framework for building web-application using CGI, FCGI, mod_ruby, or WEBrick + on top of either MySQL, PostgreSQL, or SQLite with eRuby-based templates. + EOF + + s.add_dependency('rake', '>= 0.4.11') + s.add_dependency('activerecord', '>= 1.1.0') + s.add_dependency('actionpack', '>= 0.9.5') + s.add_dependency('actionmailer', '>= 0.4.0') + s.add_dependency('dev-utils', '>= 1.0.1') + + s.files = PKG_FILES.to_a + s.require_path = 'lib' + + s.bindir = "bin" # Use these for applications. + s.executables = ["rails"] + s.default_executable = "rails" + + s.author = "David Heinemeier Hansson" + s.email = "david@loudthinking.com" + s.homepage = "http://www.rubyonrails.org" + s.rubyforge_project = "rails" +end + +Rake::GemPackageTask.new(spec) do |pkg| +end + +# Publish beta gem +desc "Publish the API documentation" +task :pgem => [:gem] do + Rake::SshFilePublisher.new("davidhh@one.textdrive.com", "domains/rubyonrails.org/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload + `ssh davidhh@one.textdrive.com './gemupdate.sh'` +end \ No newline at end of file -- cgit v1.2.3