为啥 rake db:migrate:reset 未在 rake -T 中列出? Posted 2023-03-16
技术标签:
【中文标题】为啥 rake db:migrate:reset 未在 rake -T 中列出? 【英文标题】:Why is rake db:migrate:reset not listed in rake -T?为什么 rake db:migrate:reset 未在 rake -T 中列出?
【发布时间】:2011-04-26 11:25:29
【问题描述】:
为什么rake -T
没有列出一些 rake 任务?喜欢db:migrate:reset
?我可以毫无问题地执行它,但为什么它没有列在那里?有没有办法获得真正完整的 rake 任务列表?
% 耙子 -T
(在 /home/zeus/projects/my_project 中)
rake about # 列出所有 Rails 框架和环境的版本
rake db:create # 从 config/database.yml 为当前 Rails.env 创建数据库(使用 db:create:all 在配置中创建所有数据库)
rake db:drop # 删除当前 Rails.env 的数据库(使用 db:drop:all 删除所有数据库)
rake db:fixtures:load # 将夹具加载到当前环境的数据库中。
rake db:migrate # 迁移数据库(选项:VERSION=x,VERBOSE=false)。
rake db:migrate:status # 显示迁移状态
rake db:rollback # 将模式回滚到以前的版本(指定步骤 w/STEP=n)。
rake db:schema:dump # 创建一个 db/schema.rb 文件,该文件可移植地用于 AR 支持的任何数据库
rake db:schema:load # 加载一个 schema.rb 文件到数据库中
rake db:seed # 从 db/seeds.rb 加载种子数据
rake db:setup # 创建数据库,加载模式,并使用种子数据进行初始化(使用 db:reset 也可以先删除数据库)
rake db:structure:dump # 将数据库结构转储到 SQL 文件中
rake db:version # 检索当前模式版本号
rake doc:app # 为应用程序生成文档 -- 也可用 doc:rails, doc:guides, doc:plugins (options: TEMPLATE=/rdoc-template.rb, TITLE="Custom Title")
rake erd # 根据您的模型生成实体关系图
rake log:clear # 将 log/ 中的所有 *.log 文件截断为零字节
rake middleware # 打印出你的 Rack 中间件堆栈
rake notes # 枚举所有注解(使用 notes:optimize, :fixme, :todo 获得焦点)
rake notes:custom # 枚举自定义注解,使用 ANNOTATION=CUSTOM 指定
rake rails:template # 应用 LOCATION=/path/to/template 提供的模板
rake rails:update # 从 Rails 更新配置和 public/javascript s(或者只使用 update:javascripts 或 update:configs)
rake routes # 按匹配顺序打印所有已定义的路由,并附上名称。
rake secret # 生成一个密码学安全的密钥(这通常用于为 cookie 会话生成一个秘密)。
rake spec # 运行规范目录中的所有规范(不包括插件规范)
rake spec:acceptance # 运行 spec/acceptance 中的代码示例
rake spec:controllers # 运行 spec/controllers 中的代码示例
rake spec:helpers # 运行 spec/helpers 中的代码示例
rake spec:lib # 运行 spec/lib 中的代码示例
rake spec:mailers # 运行 spec/mailers 中的代码示例
rake spec:models # 运行 spec/models 中的代码示例
rake spec:rcov # 使用 rcov 运行所有规范
rake spec:requests # 运行 spec/requests 中的代码示例
rake spec:routing # 运行 spec/routing 中的代码示例
rake spec:views # 运行 spec/views 中的代码示例
rake stats # 从应用程序报告代码统计信息(KLOC 等)
rake test # 一起运行 test:units, test:functionals, test:integration (也可用: test:benchmark, test:profile, test:plugins)
rake test:recent # 运行最近的测试test:prepare / 测试最近的变化
rake test:uncommitted # 运行未提交的测试test:prepare / 测试自上次签入以来的更改(仅限 Subversion 和 Git)
rake time:zones:all # 显示所有时区,也可用: time:zones:us, time:zones:local -- 使用 OFFSET 参数过滤,例如,OFFSET=-6
rake tmp:clear # 从 tmp/ 清除会话、缓存和套接字文件(窄 w/ tmp:sessions:clear, tmp:cache:clear, tmp:sockets:clear)
rake tmp:create # 为会话、缓存、套接字和 pid 创建 tmp 目录
【问题讨论】:
当我运行 rake -T 时,它显示...你在运行什么轨道?
我使用 Rails 3.0.1。在具有两个不同项目的两个不同系统上。它不会出现在两个系统上(请参阅已编辑帖子中的完整输出)。
【参考方案1】:
没有描述的任务将不会显示。
编辑:看起来 DHH 从 Rails 3 中删除了一些任务的描述以“减少噪音”。 rake db:setup 有一个关于 db:reset 的注释。
http://github.com/rails/rails/commit/983815632cc1d316c7c803a47be28f1abe6698fb
【讨论】:
作为一个学习 Rails 的人,我浪费了很多时间来寻找与数据库迁移相关的 rake 任务的良好、清晰的文档。 【参考方案2】:
您还可以使用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 10 中添加了 -A(或 --all)选项。
rake -T -A
显示所有任务。 rake -T db -A
显示任务名称中包含db
的所有任务(注意db
之后 -T
的位置)。
也适用于 Capistrano 3:cap -T rails -A
【参考方案3】:
您可以使用rake -P | grep rake
显示所有 Rake 任务的名称。
【讨论】:
这正是我所需要的。我用别名“raket”将它添加到我的 bash_profile 中: # 显示所有可用的 rake 任务,包括那些没有描述的任务。别名 raket="rake -P | grep rake" 效果很好。谢谢! 【参考方案4】:
作为 Thomas Obermüller 回答的后续行动,由于 -T 标志采用位置参数,因此您只需要获取“db”命名空间任务(至少使用 rake 10.0.3):rake -T db -A
【讨论】:
【参考方案5】:
在WIKI - Ruby on Rails/ActiveRecord/Migrations 上,您可以找到更多信息。
【讨论】:
【参考方案6】:
对于 windows 用户,你可以这样做 rake -P |找到“耙子”
【讨论】:
以上是关于为啥 rake db:migrate:reset 未在 rake -T 中列出?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 rake assets:precompile 需要永远?
为啥 rake db:rollback 回滚三步?
rake 和 bin/rake 的区别
使用 bundle exec rake 还是只使用 rake?
在“rake test”之后执行 rake 任务
如何从 Rake 任务中运行 Rake 任务?