2009-12-13 24 views
50

थोड़ी देर के लिए रेल पर रूबी के साथ खेल रहा था और वास्तविक स्रोत के माध्यम से देखने का फैसला किया। गिटहब से रेपो पकड़ लिया और चारों ओर देखना शुरू कर दिया। कुछ कोड में आया कि मुझे यकीन नहीं है कि यह क्या करता है या इसका क्या संदर्भ है। (यानी "bling") संदर्भित कर रहा है:

मैं कोई मुझे बता सकते हैं कि $ ActionMailer/परीक्षण में इस कोड को देखा/

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' 

abstract_unit.rb?

उत्तर

31

$: बाहरी फ़ाइलों को देखने के लिए उपयोग किया जाने वाला वैश्विक चर है।

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

$: लोड या आवश्यकता से स्क्रिप्ट और बाइनरी मॉड्यूल के लिए लोड पथ।

4

के शब्दों में Ruby Forum:

गहरे लाल रंग का पूर्वनिर्धारित वैरिएबल

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

का एक सेट के साथ आता है अगर मैं यह सही (% नहीं 100 यकीन है कि) इस इस सरणी के लिए lib पथ कहते हैं मिलता है वर्तमान फ़ाइल पर जाकर खोज पथ। जो वास्तव में सबसे अच्छा तरीका नहीं है, मैं बस RAILS_ROOT के साथ शुरू होता है (कम से कम एक रेल परियोजना के लिए)

2
$:.unshift 

$LOAD_PATH.unshift 

के समान है। आप यह भी कह सकते हैं:

$: << 
$LOAD_PATH << 

वे लोड पथ सेट करने के लिए रूबी मुहावरे बहुत आम हैं।

54

$ एक स्थानीय चर, @instance चर, या @@ वर्ग चर के विपरीत वैश्विक चर की पहचान करता है।

भाषा की आपूर्ति वैश्विक चर के अलावा $: है, जो भी द्वारा $LOAD_PATH

1

मैं चाहता हूँ टिप्पणी कुछ रूबी के बारे में अजीब पहचान की है कर रहे हैं!

$ वास्तव में लोड पथ का मतलब है। और ; का मतलब है "अंत रेखा"। परंतु!

$; का मतलब क्षेत्र विभाजक है। अपने आरईपीएल में $;.to_s चलाने का प्रयास करें और आप इसे "," पर वापस देखेंगे। वह सब कुछ नहीं हैं! $ with other suffixes can mean many other things

क्यों? Well, Perl of course!

+0

धन्यवाद, यह वही था जो मैं देख रहा था यानी कई अन्य चीजों के बीच क्षेत्र विभाजक परिभाषित करने में $ का उपयोग। – user1175135

संबंधित मुद्दे