rakeコマンドってなんだ

http://rubicle.net/rubicle_talk_1-1.html

Rubyで記述されたタスクを実行するためのツール。タスクというのは、スクリプトで記述された一連の処理のことである。

rake -T を実行すると説明付きのタスクの一覧が表示される。具体的に説明をみてみると、rake aboutというコマンドはRails周りのバージョンをリスト表示してくれる、とある。実際に実行すると確かにバージョンが列挙された。つまり、利用者がRails周りのバージョンを調べたいと思った時にすぐに参照できるように、各ソフトウェアのバージョン情報を取得する一連の処理を予めタスクとして作っておいてくれているということだ。

ちなみに rails 4.0.0 で rake -T を実行すると下記のタスクが表示される。

rake about                  # List versions of all Rails frameworks and the environment
rake assets:clean           # Remove old compiled assets
rake assets:clobber         # Remove compiled assets
rake assets:environment     # Load asset compile environment
rake assets:precompile      # Compile all the assets named in config.assets.precompile
rake db:create              # Create the database from DATABASE_URL or config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config)
rake db:drop                # Drops the database using DATABASE_URL or the current Rails.env (use db:drop:all to drop all databases)
rake db:fixtures:load       # Load fixtures into the current environment's database
rake db:migrate             # Migrate the database (options: VERSION=x, VERBOSE=false, SCOPE=blog)
rake db:migrate:status      # Display status of migrations
rake db:rollback            # Rolls the schema back to the previous version (specify steps w/ STEP=n)
rake db:schema:cache:clear  # Clear a db/schema_cache.dump file
rake db:schema:cache:dump   # Create a db/schema_cache.dump file
rake db:schema:dump         # Create a db/schema.rb file that can be portably used against any DB supported by AR
rake db:schema:load         # Load a schema.rb file into the database
rake db:seed                # Load the seed data from db/seeds.rb
rake db:setup               # Create the database, load the schema, and initialize with the seed data (use db:reset to also drop the db first)
rake db:structure:dump      # Dump the database structure to db/structure.sql
rake db:version             # Retrieves the current schema version number
rake doc:app                # Generate docs for the app -- also available doc:rails, doc:guides (options: TEMPLATE=/rdoc-template.rb, TITLE="Custom Title")
rake log:clear              # Truncates all *.log files in log/ to zero bytes (specify which logs with LOGS=test,development)
rake middleware             # Prints out your Rack middleware stack
rake notes                  # Enumerate all annotations (use notes:optimize, :fixme, :todo for focus)
rake notes:custom           # Enumerate a custom annotation, specify with ANNOTATION=CUSTOM
rake rails:template         # Applies the template supplied by LOCATION=(/path/to/template) or URL
rake rails:update           # Update configs and some other initially generated files (or use just update:configs, update:bin, or update:application_controller)
rake routes                 # Print out all defined routes in match order, with names
rake secret                 # Generate a cryptographically secure secret key (this is typically used to generate a secret for cookie sessions)
rake stats                  # Report code statistics (KLOCs, etc) from the application
rake test                   # Runs test:units, test:functionals, test:integration together
rake test:all               # Run tests quickly by merging all types and not resetting db
rake test:all:db            # Run tests quickly, but also reset db
rake test:recent            # Run tests for {:recent=>["test:deprecated", "test:prepare"]} / Deprecated; Test recent changes
rake test:uncommitted       # Run tests for {:uncommitted=>["test:deprecated", "test:prepare"]} / Deprecated; Test changes since last checkin (only Subversion and Git)
rake time:zones:all         # Displays all time zones, also available: time:zones:us, time:zones:local -- filter with OFFSET parameter, e.g., OFFSET=-6
rake tmp:clear              # Clear session, cache, and socket files from tmp/ (narrow w/ tmp:sessions:clear, tmp:cache:clear, tmp:sockets:clear)
rake tmp:create             # Creates tmp directories for sessions, cache, sockets, and pids

railsプロジェクトで言えば、ユニットテストを実行したり、データベースをマイグレーション(具体的にどんな処理かはまだ調べてない)したりする時にこれらのコマンドを実行すればいいのだろう。