2012-04-29 18 views
15

L'ho trovato nel file Gemspec di surveyor gem. Cosa fa la seguente riga?

$:.push File.expand_path("../lib", __FILE__) 
require "surveyor/version" 

Perché fa la cosa $:.push? Per me sembra proprio il suo requires il file ../lib/surveyor/version. se è così, non posso semplicemente sostituirlo con una riga successiva?

require File.expand_path('../lib/surveyor/version', __FILE__) 

Sono entrambi questi stessa cosa? Se no, allora quale differenza?

+4

Solo una nota a margine: '$ LOAD_PATH << File.expand_path ...' fa lo stesso e sembra un po 'meno offuscato, IMHO. –

+0

infatti, grazie per il suggerimento :) – CuriousMind

+3

Symbolhound.com è utile per la ricerca di sintassi come questa. –

risposta

15

$: è percorso di carico di Ruby, quindi è di fatto aggiungendo la una sottocartella /lib di una cartella in cui risiede __FILE__ a questo array, in modo che altri file da questo gioiello può essere require d.

+0

Fondamentalmente una scorciatoia di dover scrivere il percorso completo. Questo lo spiega. Grazie! – CuriousMind

+0

@Gaurish: non solo. La gemma può presumere che si trovi nel percorso di carico, in cui non riuscirà a caricarsi se lo richiede per percorso completo, senza aggiungerlo al percorso di caricamento. –