diff options
Diffstat (limited to 'Rakefile')
-rw-r--r-- | Rakefile | 83 |
1 files changed, 64 insertions, 19 deletions
@@ -1,27 +1,72 @@ -begin - require 'bundler/setup' -rescue LoadError - puts 'You must `gem install bundler` and `bundle install` to run rake tasks' -end +# frozen_string_literal: true + +require "net/http" + +$:.unshift __dir__ +require "tasks/release" +require "railties/lib/rails/api/task" + +desc "Build gem files for all projects" +task build: "all:build" + +desc "Build, install and verify the gem files in a generated Rails app." +task verify: "all:verify" -require 'rdoc/task' +desc "Prepare the release" +task prep_release: "all:prep_release" -RDoc::Task.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'Action Text' - rdoc.options << '--line-numbers' - rdoc.rdoc_files.include('README.md') - rdoc.rdoc_files.include('lib/**/*.rb') +desc "Release all gems to rubygems and create a tag" +task release: "all:release" + +desc "Run all tests by default" +task default: %w(test test:isolated) + +%w(test test:isolated package gem).each do |task_name| + desc "Run #{task_name} task for all projects" + task task_name do + errors = [] + FRAMEWORKS.each do |project| + system(%(cd #{project} && #{$0} #{task_name} --trace)) || errors << project + end + fail("Errors in #{errors.join(', ')}") unless errors.empty? + end end -require 'bundler/gem_tasks' +desc "Smoke-test all projects" +task :smoke do + (FRAMEWORKS - %w(activerecord)).each do |project| + system %(cd #{project} && #{$0} test:isolated --trace) + end + system %(cd activerecord && #{$0} sqlite3:isolated_test --trace) +end -require 'rake/testtask' +desc "Install gems for all projects." +task install: "all:install" -Rake::TestTask.new(:test) do |t| - t.libs << 'test' - t.pattern = 'test/**/*_test.rb' - t.verbose = false +desc "Generate documentation for the Rails framework" +if ENV["EDGE"] + Rails::API::EdgeTask.new("rdoc") +else + Rails::API::StableTask.new("rdoc") end -task default: :test +desc "Bump all versions to match RAILS_VERSION" +task update_versions: "all:update_versions" + +# We have a webhook configured in GitHub that gets invoked after pushes. +# This hook triggers the following tasks: +# +# * updates the local checkout +# * updates Rails Contributors +# * generates and publishes edge docs +# * if there's a new stable tag, generates and publishes stable docs +# +# Everything is automated and you do NOT need to run this task normally. +desc "Publishes docs, run this AFTER a new stable tag has been pushed" +task :publish_docs do + Net::HTTP.new("api.rubyonrails.org", 8080).start do |http| + request = Net::HTTP::Post.new("/rails-master-hook") + response = http.request(request) + puts response.body + end +end |