aboutsummaryrefslogtreecommitdiffstats
path: root/Rakefile
diff options
context:
space:
mode:
Diffstat (limited to 'Rakefile')
-rw-r--r--Rakefile83
1 files changed, 64 insertions, 19 deletions
diff --git a/Rakefile b/Rakefile
index fdcbee9c15..a67f8fd028 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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