Como obtenho conclusão de tabulação para trabalhar com 'rake'?

6

Quando tento usar o preenchimento de guias com rake , apenas arquivos são sugeridos:

$ rails test-app | grep -v create; cd test-app
$ rake <TAB><TAB>
app/      db/       lib/      public/   README    test/     vendor/   
config/   doc/      log/      Rakefile  script/   tmp/    

O pacote rake-0.8.7-2 inclui um arquivo de configuração de conclusão do Bash,

$ debsums -e rake
/etc/bash_completion.d/rake                                         OK

por isso, espero que o separador de urgência sugira as tarefas disponíveis para rake:

$ rake --tasks
(in ~/sandbox/test-app)
rake db:abort_if_pending_migrations       # Raises an error if there are pending migrations
rake db:charset                           # Retrieves the charset for the current environment's database
rake db:collation                         # Retrieves the collation for the current environment's database
rake db:create                            # Create the database defined in config/database.yml for the current RAIL...
rake db:create:all                        # Create all the local databases defined in config/database.yml
rake db:drop                              # Drops the database for the current RAILS_ENV
...

O que estou fazendo de errado?

O problema persiste após a reinstalação do rake e a reinicialização do computador. Meu ~/.bashrc contém:

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

mas a conclusão de rake parece não estar registrada:

$ complete | grep rake
$

A execução explícita de . /etc/bash_completion no shell não resolve o problema, mas a execução do seguinte comando permite a conclusão de rake temporariamente:

$ grep complete /etc/bash_completion.d/rake
[ -n "${have:-}" ] && complete -F _rake $filenames rake
$ complete -F _rake rake
$ rake <TAB><TAB>
db:abort_if_pending_migrations       db:version                           rails:update
db:charset                           doc:app                              rails:update:application_controller
db:collation                         doc:clobber_app                      rails:update:configs
db:create                            doc:clobber_plugins                  rails:update:generate_dispatchers
db:create:all                        doc:clobber_rails                    rails:update:javascripts
db:drop                              doc:guides                           rails:update:scripts
...
    
por ændrük 17.08.2011 / 17:38

1 resposta

4

As conclusões da guia são carregadas ao abrir um shell. Ao instalar um aplicativo, você precisa reabrir o shell ou executar o próximo comando para carregar as novas conclusões do bash:

. /etc/bash_completion

Parece que é um erro em rake . [ -n "${have:-}" ] verifica se uma variável chamada $have está configurada. Isso não funcionará se as chamadas anteriores tiverem falhado. Substitua por have rake :

have rake && complete -F _rake $filenames rake
    
por Lekensteyn 17.08.2011 / 17:49