63 votes

Que signifie le caractère "$" en Ruby?

Joue avec Ruby on Rails depuis un moment et a décidé de jeter un coup d'œil à la source actuelle. Saisis le repo de GitHub et regarda autour de nous. Je suis tombé sur un code dont je ne suis pas sûr de ce qu'il fait ou de ce qu'il fait référence. Quelqu'un peut-il me dire quel est le caractère du signe dollar ($) en Ruby?

J'ai vu ce code dans actionmailer / test / abstract_unit.rb

 root = File.expand_path('../../..', __FILE__)
 begin
 require "#{root}/vendor/gems/environment"
 rescue LoadError
 $:.unshift("#{root}/activesupport/lib")
 $:.unshift("#{root}/actionpack/lib")
end

lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")
$:.unshift(lib) unless $:.include?('lib') || $:.include?(lib)

require 'rubygems'
require 'test/unit'

require 'action_mailer'
require 'action_mailer/test_case'
 

Quelqu'un peut-il me dire ce que $: est le référencement?

70voto

Justin Love Points 3073

$ identifie une variable globale, par opposition à une variable locale, une variable @instance ou une variable @@ class.

Parmi les variables globales fournies par la langue, il y a $: , qui est également identifié par $LOAD_PATH

38voto

Mark Byers Points 318575

$: est la variable globale utilisée pour rechercher des fichiers externes.

De http://www.zenspider.com/Languages/Ruby/QuickRef.html#18

$: Chemin de chargement pour les scripts et les modules binaires par chargement ou besoin.

4voto

Justin Ethier Points 57486

Pour citer le Ruby Forum:

ruby est livré avec un ensemble de variables prédéfinies

 $: = default search path (array of paths)
__FILE__ = current sourcefile
 

si je comprends bien (pas à 100% sûr) cela ajoute le chemin de la bibliothèque à ce tableau de chemins de recherche en passant par le fichier actuel. ce qui n’est pas vraiment la meilleure solution, je commencerais simplement par RAILS_ROOT (au moins pour un projet de rails)

3voto

TK. Points 4728
 $:.unshift
 

est le même que

 $LOAD_PATH.unshift
 

. Vous pouvez également dire:

 $: <<
$LOAD_PATH <<
 

Ils sont assez communs idiomes Ruby pour définir un chemin de chargement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X