Rake tasks basics
Basic commands
# List all the tasks
bundle exec rake -T
Rake tasks in Rails
be rake db:migrate:redo
be rake log:clear
be rake db:migrate db:seed log:clear
# List all the TODOs and FIXMEs
be rake notes
be rake rails:update # Rails 4
be rake app:update # Rails 5
# d - diff
# Y - yes
# n - no
# q - quit
first_or_create!
in db/seed.rb
This allows us to run the be rake db:seed
command without deleting any data.
# db/seed.rb
Post.where(
title: "The title",
body: "Hello world"
).first_or_create!
Write custom tasks
# Rakefile
namespace :masatoshi do
desc "Say hello"
task :hello do
puts "Hello"
end
desc "Say world"
task :world do
puts "World"
end
desc "Say hello and world"
task :hello_world => [:hello, :world]
desc "Take parameter"
task :custom_hello, [:name] do |t, args|
puts "Hello, #{args[:name]}!"
end
end
Calling tasks from a terminal
$ be rake masatoshi:hello
Hello
$ be rake masatoshi:world
World
$ be rake masatoshi:hello_world
Hello
World
Calling tasks from a ruby file
# rake_include.rb
require "rubygems"
require "bundler"
require "rake"
Bundler.require
load "Rakefile"
Rake::Task["masatoshi:custom_hello"].invoke("Mr. Nishiguchi")
ruby rake_include.rb
Hello, Mr. Nishiguchi!