gpt4 book ai didi

ruby - 默认的 Ruby LOAD_PATH 是如何确定的?

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:58 25 4
gpt4 key购买 nike

假设我编译自己的新 Ruby (MRI 1.9.3),默认的 LOAD_PATH 是什么,它是如何计算的?

最佳答案

在我的机器上,初始加载路径如下所示:

$ 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

借助 grep,对 Ruby 源代码的调查导致了 definition of ruby_initial_load_paths[] in version.c (这是在 Ruby 1.9.3 上)。其中第一个适用的(NO_INITIAL_LOAD_PATHRUBY_SEARCH_PATH 均未设置)是 RUBY_SITE_LIB2 .查看上面的定义 we see :

#define RUBY_SITE_LIB2              RUBY_SITE_LIB    "/"RUBY_LIB_VERSION

in turn :

#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby"

按照这个定义链,很明显这对应于我上面加载路径中的第一个条目。同样,进入此变量的其他常量对应于其他加载路径条目。

ruby_initial_load_paths[] 变量用于 ruby_init_loadpath_safe() in ruby.c ,其中为进程设置了实际的加载路径。

因此,您的问题的答案是,根据构建的配置方式,初始加载路径是在编译时使用一些 #define 设置的。

关于ruby - 默认的 Ruby LOAD_PATH 是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com