Lakukan saja ini:
require_relative 'tokenizer'
Jika Anda meletakkan ini dalam file Ruby yang ada di direktori yang sama tokenizer.rb
, itu akan berfungsi dengan baik apa pun direktori kerja Anda saat ini (CWD).
Penjelasan mengapa ini adalah cara terbaik
Jawaban lain mengklaim bahwa Anda harus menggunakan require './tokenizer'
, tetapi itu adalah jawaban yang salah , karena itu hanya akan berfungsi jika Anda menjalankan proses Ruby Anda di direktori yang sama dengan yang tokenizer.rb
ada. Cukup satu-satunya alasan untuk mempertimbangkan menggunakan require
seperti itu adalah jika Anda perlu mendukung Ruby 1.8, yang tidak ada require_relative
.
The require './tokenizer'
jawaban mungkin bekerja untuk Anda hari ini, tetapi tidak perlu membatasi cara di mana Anda dapat menjalankan kode Ruby Anda. Besok, jika Anda ingin memindahkan file ke direktori lain, atau hanya ingin memulai proses Ruby Anda dari direktori lain, Anda harus memikirkan kembali semua require
pernyataan itu.
Menggunakan require
untuk mengakses file yang berada di jalur pemuatan adalah hal yang baik dan permata Ruby selalu melakukannya. Tetapi Anda tidak harus memulai argumen require
dengan .
kecuali Anda melakukan sesuatu yang sangat istimewa dan tahu apa yang Anda lakukan.
Ketika Anda menulis kode yang membuat asumsi tentang lingkungannya, Anda harus berpikir dengan hati-hati tentang asumsi yang akan dibuat. Dalam hal ini, ada hingga tiga cara berbeda untuk memerlukan tokenizer
file, dan masing-masing membuat asumsi yang berbeda:
require_relative 'path/to/tokenizer'
: Diasumsikan bahwa jalur relatif antara dua file sumber Ruby akan tetap sama.
require 'path/to/tokenizer'
: Menganggap bahwa path/to/tokenizer
ada di dalam salah satu direktori di jalur pemuatan ( $LOAD_PATH
). Ini biasanya memerlukan pengaturan tambahan, karena Anda harus menambahkan sesuatu ke jalur pemuatan.
require './path/to/tokenizer'
: Menganggap bahwa jalur relatif dari direktori kerja proses Ruby saat ini ke tokenizer.rb
akan tetap sama.
Saya pikir bahwa bagi kebanyakan orang dan sebagian besar situasi, asumsi yang dibuat dalam opsi # 1 dan # 2 lebih mungkin berlaku seiring berjalannya waktu.