Giả sử tôi biên dịch Ruby mới của riêng tôi (MRI 1.9.3), LOAD_PATH mặc định là gì và tính toán như thế nào?Xác định Ruby LOAD_PATH mặc định như thế nào?
Trả lời
Trên máy tính của tôi, con đường tải ban đầu trông như thế này:
$ ruby -e 'puts $LOAD_PATH'
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.8.0
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.8.0
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0
vũ trang với grep
, một cuộc điều tra vào nguồn của Ruby dẫn đến definition of ruby_initial_load_paths[]
in version.c
(đây là trên Ruby 1.9.3). Đầu tiên trong số này áp dụng (không phải NO_INITIAL_LOAD_PATH
hoặc RUBY_SEARCH_PATH
đã được đặt) là RUBY_SITE_LIB2
. Nhìn vào định nghĩa ở trên định nghĩa rằng we see:
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
và in turn:
#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby"
Tiếp theo chuỗi này định nghĩa, nó trở nên rõ ràng rằng điều này tương ứng với sự xâm nhập đầu tiên trong con đường tải của tôi ở trên. Tương tự, các hằng số khác đi vào biến này tương ứng với các mục nhập đường dẫn tải khác.
Biến số ruby_initial_load_paths[]
được sử dụng trong ruby_init_loadpath_safe()
in ruby.c
, nơi đường dẫn tải thực tế được thiết lập cho quy trình.
Vì vậy, câu trả lời cho câu hỏi của bạn là đường dẫn tải ban đầu được đặt tại thời gian biên dịch với một số #define
giây, theo cách xây dựng đã được định cấu hình.
biên soạn của bạn tạo ra một thư mục lib trên hệ thống * nix dựa nó thường là
/usr/lib/ruby/X.Y.Z
X.Y.Z đại diện cho số phiên bản của ruby phiên bản C api của bạn.
- 1. Vagrant sử dụng Ruby 1.9.3 như mặc định
- 2. graphviz xác định thêm "mặc định"
- 3. MDNS xác định chính xác địa chỉ như thế nào?
- 4. GDB xác định đáy của ngăn xếp như thế nào?
- 5. giá trị mặc định xác định trong makefile
- 6. ruby đối số mặc định thành ngữ
- 7. cách đặt ruby mặc định bằng rvm
- 8. Các đường ray xác định định dạng yêu cầu đến như thế nào?
- 9. Silverlight xác định hội đồng là "Silverlight" như thế nào?
- 10. như thế nào UIAutomation xác định liệu một UIAElement.isVisible()
- 11. Quy trình xử lý được xác định như thế nào?
- 12. Làm thế nào để xác định phương thức accessor cho tham số constructor mặc định?
- 13. Làm thế nào để lập trình xác định ứng dụng mặc định trong linux
- 14. được ký như mặc định trong C
- 15. Xác định phương thức đóng trong Ruby
- 16. Tôi làm cách nào để xác định biểu định kiểu mặc định cho trình duyệt?
- 17. Hàm băm ruby nguyên so với mặc định proc - loại bỏ proc mặc định?
- 18. Nếu tôi muốn xác định định dạng tệp, tôi sẽ làm như thế nào?
- 19. Zend_Controller_Router_Exception: Mặc định tuyến không được xác định
- 20. Tại sao Ruby 1.9.2 xóa "." từ LOAD_PATH và giải pháp thay thế là gì?
- 21. Add $ LOAD_PATH bên ngoài
- 22. Xác định vị trí của Ruby Gems
- 23. Mở rộng ruby trong C - cách xác định giá trị đối số mặc định để hoạt động?
- 24. Phương thức khởi tạo mặc định của System.Drawing.Graphics bị loại bỏ như thế nào?
- 25. Làm thế nào để vượt qua std :: bản đồ như một tham số constructor mặc định
- 26. chỉ định định dạng mặc định trong định tuyến spec
- 27. Trình tạo bóng GLSL mặc định trông như thế nào? cho phiên bản 330
- 28. WPF ổn định như thế nào?
- 29. Máy ec2 ổn định như thế nào?
- 30. Cách đặt phiên bản Ruby mặc định bằng RVM?
Không, số phiên bản có đại diện cho phiên bản API C của Ruby –