2013-03-06 21 views
0

我每次都要跑/重做我的Rails应用程序特定的迁移,我不得不通过以下步骤来获得确切的版本号:任何bash/rails插件来自动完成/建议迁移版本?

  1. grep的 - 在数据库中搜索文件/迁移文件夹包含我需要的模型/表名称,或者
  2. locate - 与grep类似,我搜索包含模型/表名称的文件,并用grep管道过滤db/migrate结果,或者
  3. ls - 使用ls db/migrate/2xxx并保持使用自动完成状态,直到我缩小我正在寻找的确切迁移范围

我想知道是否有更简单的方法来做到这一点。也就是说,一个插件,当我开始进入rake db:migrate:redo VERSION=

可能显示的版本号是否有任何庆典/ Rails插件,将做到这一点?

回答

0

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

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

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

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

而且它会前进3步。我会考虑其他选择,如果我找到了,我会在这里发布答案。

另外,还有另外一种方法。但是如果你想插件,请告诉我你正在使用的编辑器。如果你使用崇高,这可能是有用的。你有一个插件。至少要找到迁移https://github.com/KELiON/RailsMigrationsList

+0

我正在使用gedit。我可以在我的编辑器中打开迁移文件,所以这绝不是问题。但是如果我需要重做一个特定的版本,那么获取该版本号是很乏味的。 例如,正如我在问题中提到的,如果我需要重做特定的迁移,唯一的方法是通过我提到的过程获取版本号 - 20100727200521。 我想知道是否有一个更容易的方法获取此号码。 – sridharraman 2013-03-13 11:37:47

+0

好吧,我明白你的意思了。好的,然后是一个问题:你如何描述你如何知道你在寻找版本20100727200521而不是版本20100727200522?我可以建议巴赫,但我需要回答你如何确定你需要的版本。我明白你是如何搜索的,但你能否描述你如何知道你需要什么版本? – Aleks 2013-03-13 13:38:45

+0

一个典型的用例是由于客户端的某些更改而被迫修改迁移。所以,我修改了迁移XXXX_create_articles(例如)。在编辑器中,通过搜索“文章”很容易获得此迁移文件。所以当我打开文件时,我会查看文件名,并在编辑器和终端之间切换,并输入版本号(从文件名)。 – sridharraman 2013-03-25 06:16:03

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增加了完成为许多轨命令,但不进行迁移的版本。