【问题标题】:How to set Ruby's load path externally如何在外部设置 Ruby 的加载路径
【发布时间】:2009-05-23 07:40:17
【问题描述】:

我有一个自定义 Ruby 库目录,我希望在执行 Ruby 时自动添加到 Ruby 的加载路径中。我知道我可以对 Ruby 使用 -I 选项,但是我可以设置一个环境变量之类的东西来全局确定 Ruby 的加载路径。

我想在没有 root 权限的 Linux 机器上安装 Ruby Gems,因此我需要在非标准位置有一个 Ruby 加载路径。我按照“Installing RubyGems in a User Directory”安装了 RubyGems,但 gem 命令没有选择非标准加载路径。

也许我在这里遗漏了一些明显的东西,让自己变得更难了?

【问题讨论】:

    标签: ruby rubygems


    【解决方案1】:

    请参阅 The Pickaxe Book 中的“Ruby and Its World”一章,特别是有关环境变量的部分。摘录:

    RUBYLIB 
      Additional search path for Ruby programs ($SAFE must be 0).
    DLN_LIBRARY_PATH
      Search path for dynamically loaded modules.
    RUBYLIB_PREFIX
      (Windows only) Mangle the RUBYLIB search path by adding this
      prefix to each component.
    

    【讨论】:

    • RUBYLIB 成功了。我不确定为什么一个小时的谷歌搜索无法挖掘出这些信息。谢谢!
    【解决方案2】:

    确保您已将安装的 bin 目录放置在您的 $PATH 中以用于 gem 命令工作。它应该修改 RUBYLIB 本身,但如果没有,请尝试 Martin's answer 修复它。

    然后,您可以将 gem home(rubygems 安装的 gem 存储在其中)放在本地。

    只需使用$GEM_HOME(或在您的~/.gemrc 中进行设置)并检查是否所有内容都使用gem environment

    % mkdir ~/.gems % 导出 GEM_HOME=~/.gems % gem 帮助环境 用法:gem 环境 [arg] [options] 常用选项: -h, --help 获取有关此命令的帮助 -V, --[no-]verbose 设置输出的详细级别 -q, --quiet 静音命令 --config-file FILE 使用这个配置文件而不是默认的 --backtrace 显示错误的堆栈回溯 --debug 开启 Ruby 调试 论据: packageversion 显示包版本 gemdir 显示 gem 的安装路径 gempath 用于搜索宝石的显示路径 version 显示 gem 格式版本 remotesources 显示远程 gem 服务器 显示一切 概括: 显示有关 RubyGems 环境的信息 描述: RubyGems 环境可以通过命令行参数控制, gemrc 文件、环境变量和内置默认值。 命令行参数默认值和一些 RubyGems 默认值可以在 ~/.gemrc 文件用于单个用户,/etc/gemrc 用于所有用户。一个gemrc 是具有以下 YAML 键的 YAML 文件: :sources: 用于安装 gem 的远程 gem 存储库的 YAML 数组 :verbose: gem 命令的详细程度。 false、true 和 :really 是 水平 :update_sources:启用/禁用存储库元数据的自动更新 :backtrace: RubyGems 遇到错误时打印回溯 :bulk_threshold: 当这么多来源用完时切换到批量更新 日期(旧设置) :gempath: 寻找宝石的路径 gem_command:包含指定 gem 命令的参数的字符串 例子: :详细:假 安装:--no-wrappers 更新:--无包装 RubyGems 的默认本地存储库可以用 GEM_PATH 和 GEM_HOME 环境变量。 GEM_HOME 将默认存储库设置为 安装到。 GEM_PATH 允许搜索多个本地存储库 为了 宝石。 如果你在代理服务器后面,RubyGems 使用 HTTP_PROXY, HTTP_PROXY_USER 和 HTTP_PROXY_PASS 环境变量来发现 代理服务器。 如果要打包 RubyGems,所有 RubyGems 的默认值都在 lib/rubygems/defaults.rb。您可以在 lib/rubygems/defaults/operating_system.rb

    【讨论】:

      【解决方案3】:

      让生活变得轻松并安装RVM。它将安装您想要的任何版本的 Ruby,并让您在它们之间切换,并且不需要 root 访问权限。它还有许多其他杀手级功能,您在使用一段时间后就会上瘾。

      【讨论】:

      • 如何使用 RVM 在自定义位置添加库?
      • 我认为这不能回答 OP 问题。
      • 这个答案是如何获得 4 票赞成的应该是一个单独的 SO 问题
      • RVM 或 rbenv 都可以做到这一点,但无论哪种方式,这个答案都回避了 OP 的问题,所以它并不是真正的密切相关。
      【解决方案4】:

      我使用@MartinCarpenter's solution 使用minitest 运行特定/特定/单一测试方法。我通常使用Rake::TestTasktest 目录添加到$LOAD_PATH,例如t.libs << 'test',我可以使用命令行来完成,如下所示:

      RUBYLIB=test ruby test/user_test.rb --name test_create
      

      我将test 添加到$LOAD_PATH,因为user_test.rb 调用require 'test_helper' 来加载lib/test_helper.rb

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-21
        • 2016-01-18
        • 2012-05-29
        • 1970-01-01
        • 2013-01-22
        相关资源
        最近更新 更多