为什么rake db:migrate:reset没有在rake -T中列出?

为什么一些rake任务没有被rake -T列出? 像db:migrate:reset ? 我可以执行它没有问题,但为什么不在那里列出? 有没有办法得到一个真正的完整列表的任务?

 %rake -T
 (在/ home / zeus / projects / my_project中)
 rake about#列出所有Rails框架和环境的版本
 rake db:create#从config / database.yml中为当前的Rails.env创build数据库(使用db:create:all创buildconfiguration中的所有dbs)
 rake db:drop#删除当前Rails.env的数据库(使用db:drop:all删除所有数据库)
 rake db:fixtures:load#将Fixture加载到当前环境的数据库中。
 rake db:migrate#迁移数据库(选项:VERSION = x,VERBOSE = false)。
 rake db:migrate:status#显示迁移的状态
 rake db:rollback#将模式恢复到以前的版本(指定步骤w / STEP = n)。
 rake db:schema:dump#创build一个db / schema.rb文件,该文件可以轻松地用于AR支持的任何数据库
 rake db:schema:load#将一个schema.rb文件加载到数据库中
 rake db:seed#从db / seeds.rb中加载种子数据
 rake db:setup#创build数据库,加载模式,并使用种子数据进行初始化(使用db:reset也可以首先删除数据库)
 rake db:structure:dump#将数据库结构转储到一个SQL文件
 rake db:version#检索当前的模式版本号
 rake文档:app#为应用程序生成文档 - 也可以使用doc:rails,doc:guides,doc:plugins(options:TEMPLATE = / rdoc-template.rb,TITLE =“Custom Title”)
 rake erd#根据您的模型生成一个实体关系图
 rake log:clear#将日志中的所有* .log文件截断为零字节
耙中间件#打印出您的Rack中间件堆栈
耙注#枚举所有注释(使用注意:优化,:fixme,:todo焦点)
 rake notes:custom#枚举自定义注释,用ANNOTATION = CUSTOM指定
 rake rails:template#应用LOCATION = / path / to / template提供的模板
耙路轨:更新#从Rails更新configuration和公共/ JavaScripts(或只使用更新:JavaScript的或更新:configuration)
耙路由#按照匹配顺序打印出所有定义的路由,并带有名称。
 rake secret#生成密码安全密钥(通常用于为cookie会话生成密码)。
 rake spec#运行spec目录下的所有规格(不包括插件规格)
 rake spec:acceptance#运行spec / acceptance中的代码示例
 rake spec:controllers#在spec / controllers中运行代码示例
 rake spec:helpers#在spec / helpers中运行代码示例
 rake spec:lib#在spec / lib中运行代码示例
 rake spec:mailers#运行规范/邮件程序中的代码示例
 rake spec:models#在spec / models中运行代码示例
 rake spec:rcov#使用rcov运行所有规格
 rake spec:requests#在spec / requests中运行代码示例
 rake spec:routing#在spec / routing中运行代码示例
 rake spec:views#运行规范/视图中的代码示例
耙统计#从应用程序报告代码统计(KLOC等)
耙testing#运行testing:单位,testing:函数,testing:集成在一起(也可用:testing:基准,testing:configuration文件,testing:插件)
耙testing:近期#运行最近的testingtesting:准备/testing最近的变化
耙testing:未提交#运行testing未提交的testing:准备/testing自上次签入以来的变化(只有Subversion和Git)
 rake time:zones:all#显示所有时区,也可用:time:zones:us,time:zones:local  - 带OFFSET参数的filter,例如OFFSET = -6
 rake tmp:clear#清除tmp /(narrow w / tmp:sessions:clear,tmp:cache:clear,tmp:sockets:clear)中的会话,caching和套接字文件。
 rake tmp:create#为会话,caching,套接字和pid创buildtmp目录

没有说明的任务不会显示出来。

编辑:看起来像DHH从Rails 3中删除了一些任务的描述,以“减less噪音”。 耙db:安装程序有一个关于db:注意虽然。

http://github.com/rails/rails/commit/983815632cc1d316c7c803a47be28f1abe6698fb

您也可以使用rake db -T -A显示所有任务,甚至是未注释的任务。 为了便于参考,这些交换机正在执行以

 -T, --tasks [PATTERN] Display the tasks (matching optional PATTERN) with descriptions, then exit. -A, --all Show all tasks, even uncommented ones (in combination with -T or -D) 

你可以使用rake -P | grep rake rake -P | grep rake显示所有Rake任务的名称。

作为ThomasObermüller的回答,由于-T标志需要一个位置参数,为了得到'db'命名空间任务(至less在rake 10.0.3中),你需要这样做: rake -T db -A

在这个WIKI上 – Ruby on Rails / ActiveRecord / Migrations,你可以find更多的信息。

对于Windows用户,你做这个耙 – P | find“耙”