2008-10-25 14 views
23

¿Cómo obtengo el directorio donde se encuentra rakefile.rb?Rake y directorio actual

Quiero utilizar esto como mi directorio raíz para localizar todo.

+0

¿Ha considerado la respuesta para Dir.pwd? Parece más apropiado: http://ruby-doc.org/core/classes/Dir.html#M002316 –

+1

Dir.pwd le brinda el directorio, en el que se encuentra, al iniciar el comando de rastreo. Este no es necesariamente el lugar del rakefile. – user1934428

Respuesta

37

uso __FILE__ para obtener el nombre del archivo, entonces puede obtener el directorio de allí:

en test.rb

puts __FILE__ 

de salida:

/users/foo/test.rb 

__FILE__ resuelve la ruta completa de el archivo se encuentra en

Utilice esta opción para obtener el nombre de dir:.

File.dirname(__FILE__) 
+14

Esto es correcto, pero está mal en el caso en que Rakefile necesita algún otro archivo y ese archivo necesita saber la ubicación del Rakefile; en ese caso, 'Rake.application.original_dir' es lo que quieres. – TALlama

2

Si se trata de una aplicación RoR, su Rakefile.rb debe estar en su directorio RAILS_ROOT. Así que en cualquier secuencia de comandos se puede especificar la ubicación de archivos como

config.load_paths += %W(#{RAILS_ROOT}/extras) 
19

Se puede conseguir llamando application.original_dir método. En la tarea puede lograr aplicación objeto usando aplicación método en el objeto tarea.

+1

No creo que esto aborde la pregunta de OP, pero es la respuesta que estaba buscando. :) –

+4

en la versión posterior de Rake Tengo este es Rake.original_dir – peterk

+1

Para mí Rake.application.original_dir funcionó .... –

6

¿Por qué no usar simplemente Dir.pwd

?

+2

El problema es que puede invocar el rakefile desde otro directorio como: $ rake -f subdir/rakefile y es posible que desee la ruta donde rakefile existe porque puede necesitar otro dependencias disponibles allí. Usar Dir.pwd le daría el directorio de trabajo actual, pero eso no sería el lugar donde viven sus otras dependencias (digamos que tiene archivos jar, por ejemplo) – aneccodeal

Cuestiones relacionadas