سلوك روبي غريب مع __file__ ثابت؟
سؤال
مرحبا كنت اختبر بعض الأشياء الأساسية للغاية في روبي واكتشف ما يلي.
إذا وضعت في ملف يسمى xxxx.rb في هذا المسار "C: المستندات والإعدادات Desktop XXXX.rb"
puts __FILE__
واستدعاء ملف Ruby هذا في سطر الأوامر دون مسبق Ruby، فإن الإخراج هو التالي
C: / المستندات والإعدادات / سطح المكتب / xxxx.rb
ولكن إذا استدعت ملف xxxx.rb مع روبي (روبي xxxx.rb) في الأمر مثل الإخراج هو ما يلي:
xxxx.rb.
لماذا هذا الفرق؟ شكرًا
PD: أنا على نظام التشغيل Windows XP SP3
نسخة روبي: 1.8.6
المحلول
ما تريده هو توسيع المسار بشكل صحيح:
# Affected by the current working directory, etc.
puts __FILE__
# Always an absolute path
puts File.expand_path(__FILE__, Dir.getwd)
هذا يأخذ دليل عملك الحالي في الاعتبار.
نصائح أخرى
أنا أظن أنه عندما انقر فقط انقر فوق الملف، يتم تمرير المسار المطلق. يجب عليك تحقيق نفس التأثير عن طريق الاتصال به مثل:
ruby C:/Documents and Settings/Desktop/xxxx.rb
لا تنتمي إلى StackOverflow