gpt4 book ai didi

ruby - 将 ruby​​ 和 ruby​​gems 移动到自定义路径中

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

我有一个本地 ruby​​ 解释器创建了一个安装在 /usr/lib/projectA/ruby/bin/ruby 下的第三方

现在,我想将整个文件夹结构复制到另一个具有相同结构的文件夹中:/usr/lib/projectB/ruby/bin/ruby

复制文件后,调用复制的ruby,例如

# /usr/lib/projectB/ruby/bin/ruby -v
ruby 1.9.x

但是,当我运行时似乎在工作

# /usr/lib/projectB/ruby/bin/ruby -e 'puts 1'
<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
from <internal:gem_prelude>:1:in `<compiled>'

好像找不到rubygems,所以我加上路径

# /usr/lib/projectB/ruby/bin/ruby -e 'puts 1' -I '/usr/lib/projectB/ruby/lib/'
/usr/lib/projectB/ruby/lib/ruby/1.9.1/rubygems.rb:31:in `require': cannot load such file -- rbconfig (LoadError)

现在,无法加载其他文件,所以我假设还会有更多文件..

所以

  1. 为我的新 ruby​​ 设置新 rubygems 基本路径的正确方法是什么?
  2. 为什么即使调用 puts 1 也会调用 ruby​​gems?

附注我不能使用 rvm 或类似的方法,因为我们需要将带有 ruby​​ 的整个 zip 包部署给我们的用户。

最佳答案

您可以使用 RVM 并通过 rvm_path 参数在您的 .rvmrc 文件中设置路径。如果路径正常,还要仔细检查您的 ~/.bashrc~/.bash_profile

其他选项是为 ruby​​ 使用 $PATH$LD_LIBRARY_PATH 并使用提供位置的 $GEM_PATH (可能有几个) 可以找到 gem 的地方。您可能需要使用 Ruby 的环境变量:

RUBYOPT     Additional command-line options to Ruby; examined after real command-line options are parsed ($SAFE must be 0).
RUBYLIB Additional search path for Ruby programs ($SAFE must be 0).
RUBYPATH With -S option, search path for Ruby programs (defaults to PATH).
RUBYSHELL Shell to use when spawning a process; if not set, will also check SHELL or COMSPEC.
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.

来自 here .

关于ruby - 将 ruby​​ 和 ruby​​gems 移动到自定义路径中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18416533/

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