Pergunta

Eu sei que você pode ver todas as tarefas possíveis de rake digitando

rake -T

Mas eu preciso saber o que exatamente uma tarefa faz. Da saída, como posso encontrar um arquivo de origem que realmente tenha a tarefa? Por exemplo, estou tentando encontrar a fonte do banco de dados: Schema: Dump Task.

Foi útil?

Solução

Apesar do que os outros disseram, você posso Obtenha programaticamente a localização da fonte das tarefas de rake em um aplicativo Rails. Para fazer isso, basta executar algo como o seguinte em seu código ou de um console:

# load all the tasks associated with the rails app
Rails.application.load_tasks

# get the source locations of actions called by a task
task_name = 'db:schema:load' # fully scoped task name
Rake.application[task_name].actions.map(&:source_location)

Isso retornará os locais de origem de qualquer código que seja executado para esta tarefa. Você também pode usar #prerequisites ao invés de #source_location Para obter uma lista de nomes de tarefas de pré -requisito (por exemplo, 'ambiente', etc.).

Você também pode listar todas as tarefas carregadas usando:

Rake.application.tasks

ATUALIZAR: Veja a boa resposta de Magne abaixo. Para versões de ancinho> = 0.9.0 você pode usar rake -W para mostrar a localização da fonte de suas tarefas de rake.

Outras dicas

Eu sei que essa é uma pergunta antiga, mas em qualquer caso:

rake -W

Isso foi introduzido no Rake 0.9.0.

http://rake.rubyforge.org/doc/release_notes/rake-0_9_0_rdoc.html

Suporte para o sinalizador –Where (-w) para mostrar onde uma tarefa é definida.

Infelizmente, não há maneira programática de fazer isso. As tarefas de rake podem ser carregadas do próprio Rails, Lib/Tasks ou de qualquer plug -in com um diretório de tarefas.

Isso deve prender quase tudo que não está dentro dos próprios trilhos:

find . -name "*.rake" | xargs grep "whatever"

Quanto a db:schema:dump, aqui está a fonte:

desc "Create a db/schema.rb file that can be portably used against any DB supported by AR"
task :dump => :environment do
  require 'active_record/schema_dumper'
  File.open(ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb", "w") do |file|
    ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
  end
end

Pode ser encontrado na linha 242 do Lib/Tasks/Database.Rake no Rails 2.2.2 GEM. Se você tem uma versão diferente do Rails, basta procurar por "namespace :schema".

Você provavelmente realmente quer a fonte do ActiveRecord::SchemaDumper, mas acho que você não deve ter problemas para descobrir onde está. :-)

Para a maioria das tarefas de rake nos trilhos, procure no diretório GEM do Rails, em LIB/tarefas.

Se você vende trilhos na sua estrutura de diretório de aplicativos, procure em fornecedores/trilhos/ferrovias/libras/tarefas em vez disso

De qualquer maneira, db: esquema: dump está em bancos de dados.rake.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top