【问题标题】:Moving ruby and rubygems into a custom path将 ruby​​ 和 ruby​​gems 移动到自定义路径中
【发布时间】:2013-08-24 08:25:19
【问题描述】:

我有一个本地 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 或类似方法,因为我们需要将整个 zip 包与 ruby​​ 一起部署给我们的用户。

【问题讨论】:

    标签: ruby rubygems gem bundler


    【解决方案1】:

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

    其他选项是使用$PATH$LD_LIBRARY_PATH 来玩红宝石,并使用$GEM_PATH 提供可以找到宝石的位置(可能有多个)。 您可能需要使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多