rails generate example commands ruby-on-rails ruby rake

ruby on rails - generate - ¿Cómo encuentro el archivo de origen para una tarea de rake?



ruby on rails rake (4)

A pesar de lo que otros han dicho, puede obtener mediante programación la ubicación de origen de las tareas de rake en una aplicación de rieles. Para hacer esto, simplemente ejecute algo como lo siguiente en su código o desde una consola:

# 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)

Esto devolverá las ubicaciones de origen de cualquier código que se ejecute para esta tarea. También puede usar #prerequisites lugar de #source_location para obtener una lista de nombres de tareas de requisitos previos (por ejemplo, ''entorno'', etc.).

También puede enumerar todas las tareas cargadas usando:

Rake.application.tasks

ACTUALIZACIÓN: Ver la buena respuesta de Magne a continuación. Para versiones de rake> = 0.9.0 puede usar rake -W para mostrar la ubicación de origen de sus tareas de rake.

Sé que puedes ver todas las tareas posibles de rake escribiendo

rake -T

Pero necesito saber qué hace exactamente una tarea. Desde la salida, ¿cómo puedo encontrar un archivo fuente que realmente tenga la tarea? Por ejemplo, estoy tratando de encontrar la fuente para la tarea db: schema: dump.


Desafortunadamente, no hay una manera programática de hacer esto. Las tareas de rake se pueden cargar desde los rieles en sí, las tareas / lib, o desde cualquier complemento con un directorio de tareas.

Esto debería atrapar a casi todo lo que no sea dentro de Rails:

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

En cuanto a db:schema:dump , aquí está la fuente:

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

Se puede encontrar en la línea 242 de lib / tasks / database.rake en la gema 2.2.2 de rails. Si tienes una versión diferente de Rails, simplemente busca " namespace :schema ".

Es probable que realmente desee la fuente del ActiveRecord::SchemaDumper , pero creo que no debería tener problemas para averiguar dónde está. :-)


Para la mayoría de las tareas de rake en Rails, busque en el directorio de gemas de Rails, en lib / tasks.

Si ha vendido Rails en la estructura de directorio de su aplicación, busque en su lugar el proveedor / rails / railties / lib / tasks

De cualquier manera, db: schema: dump está en database.rake.