শুধু এটি করুন:
require_relative 'tokenizer'
আপনি যদি tokenizer.rbএটিকে একই ডিরেক্টরিতে থাকা একটি রুবি ফাইলটিতে রাখেন তবে এটি আপনার বর্তমান ওয়ার্কিং ডিরেক্টরি (সিডাব্লুডি) যাই হোক না কেন এটি দুর্দান্ত কাজ করবে।
কেন এটি সেরা উপায় তা ব্যাখ্যা Exp
অন্য উত্তরগুলির দাবি আপনার ব্যবহার করা উচিত require './tokenizer', তবে এটি ভুল উত্তর, কারণ এটি কেবল তখনই কাজ করবে যদি আপনি নিজের রুবি প্রসেসটি একই ডিরেক্টরিতে চালিত করেন P তবে আপনাকে এটির tokenizer.rbপ্রয়োজনটি বিবেচনা করার একমাত্র কারণ requireহতে পারে যদি আপনার প্রয়োজন হয় রুবি 1.8 সমর্থন করে, যা নেই require_relative।
require './tokenizer'উত্তর আজ আপনার জন্য কাজ করতে পারে, কিন্তু এটা অকারণে উপায়ে আপনি আপনার রুবি কোড রান করতে পারেন সীমিত করে। আগামীকাল, আপনি যদি নিজের ফাইলগুলি অন্য ডিরেক্টরিতে সরিয়ে নিতে চান, বা অন্য একটি ডিরেক্টরি থেকে আপনার রুবি প্রক্রিয়া শুরু করতে চান, আপনাকে সেই সমস্ত requireবিবৃতি পুনর্বিবেচনা করতে হবে ।
requireলোডের পথে থাকা ফাইলগুলিতে অ্যাক্সেস ব্যবহার করা একটি দুর্দান্ত জিনিস এবং রুবি রত্নগুলি সর্বদা এটি করে। কিন্তু আপনি আর্গুমেন্ট প্রাপ্ত করতে শুরু করা উচিত নয় requireএকটি সঙ্গে .কিছু খুব বিশেষ যদি না আপনি করছেন এবং জানতে আপনি কি করছেন।
আপনি যখন এমন কোড লিখেন যা এর পরিবেশ সম্পর্কে অনুমান করে, তখন কী অনুমান করা উচিত তা আপনার যত্ন সহকারে চিন্তা করা উচিত। এই ক্ষেত্রে, tokenizerফাইলের প্রয়োজনের জন্য তিনটি আলাদা আলাদা উপায় রয়েছে এবং প্রত্যেকটি পৃথক অনুমান করে:
require_relative 'path/to/tokenizer': ধরে নেওয়া হয় যে দুটি রুবির উত্স ফাইলগুলির মধ্যে আপেক্ষিক পথটি একই থাকবে।
require 'path/to/tokenizer': ধরে নেওয়া যায় যে path/to/tokenizerলোড পাথ ( $LOAD_PATH) এর ডিরেক্টরিগুলির মধ্যে একটিতে । এটির জন্য সাধারণত অতিরিক্ত সেটআপ প্রয়োজন, যেহেতু আপনাকে লোড পথে কিছু যুক্ত করতে হবে।
require './path/to/tokenizer': ধরে নেওয়া হয়েছে যে রুবি প্রসেসের বর্তমান ওয়ার্কিং ডিরেক্টরি থেকে আপেক্ষিক পথটি tokenizer.rbএকই থাকবে।
আমি মনে করি যে বেশিরভাগ লোক এবং বেশিরভাগ পরিস্থিতিতে, # 1 এবং # 2 বিকল্পে করা অনুমানগুলি সময়ের সাথে সাথে সত্য ধারণ করার সম্ভাবনা বেশি।