0

每次我必须在我的 rails 应用程序中运行/重做特定迁移时,我都必须通过以下步骤来获取确切的版本号:

  1. grep - 在 db/migrate 文件夹中搜索包含我需要的模型/表名称的文件,或者
  2. 定位 - 与 grep 类似,我搜索包含模型/表名称的文件并使用 grep 将其通过管道过滤掉 db/migrate 结果,或者
  3. ls - 使用 ls db/migrate/2xxx 并继续使用自动完成,直到我缩小我正在寻找的确切迁移范围

我想知道是否有更简单的方法可以做到这一点。也就是说,当我开始输入时可能会建议版本号的插件rake db:migrate:redo VERSION=

是否有任何 bash/rails 插件可以做到这一点?

4

2 回答 2

0

你可以这样做。不指定版本号:

编辑:我已经更新了所有你可以使用的列表。我不知道插件,但这也可能会有所帮助。

rake db:rollback
rake db:rollback STEP=3
rake db:migrate:down

rake db:migrate:redo
rake db:migrate:redo STEP=3

它会后退 3 步。我会考虑其他选项,如果我找到,我会在这里发布答案。

此外,还有另一种方式。但是,如果您想要插件之类的东西,请告诉我您使用的是什么编辑器。如果您使用 sublime,它可能会很有用。你有一个插件。至少要找到迁移https://github.com/KELiON/RailsMigrationsList

于 2013-03-06T10:48:04.907 回答
0

这不是一个解决方案,但它是第一步,它可以节省一点时间。当您按 Tab 时,它会列出迁移,然后您必须复制和粘贴。它使用定义函数的技巧来为 db:migrate 任务设置别名。

键入 migrate_down 或 migrate_up 并按 TAB 键看看会发生什么。

function _migrations_complete() {
  local migrations=`ls db/migrate/*rb | cut -b12-`
  COMPREPLY=($(compgen -W "${migrations}" -- ${COMP_WORDS[COMP_CWORD]}))
  return 0
}
function migrate_up() {
  bundle exec rake db:migrate:up VERSION=$1
}
function migrate_down() {
  bundle exec rake db:migrate:down VERSION=$1
}
complete -o default -o nospace -F _migrations_complete migrate_up
complete -o default -o nospace -F _migrations_complete migrate_down

我想做的是完成迁移的名称并获取时间戳。我不知道是否完全可以评估它是否可能。

顺便说一句,这个https://github.com/jweslley/rails_completion为许多 rails 命令添加了完成,但没有为迁移版本添加完成。

于 2014-01-19T23:18:30.700 回答