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

标签 ruby rubygems gem bundler

我有一个本地 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/

相关文章:

ruby - 检测是否安装了 git 的独立于平台的方法

ruby - 在实例方法中使用 mixin 方法

ruby - 使用 %w[] 创建空字符串数组

ruby - 检查给定字符串是否作为键存在于嵌套哈希中

mysql - 缺少 MySQL 客户端

ruby-on-rails - 有什么方法可以判断在运行时为 Rails 进程加载了哪些 gem 和插件?

ruby - 未初始化的常量 XmlSimple,但我包含了正确的 gem

mysql - 引发 MysqlError; raise Mysql::Error 都有效,这是怎么发生的?

ruby - zsh : command not found: bundle (after gem install bundle)

gem - 为什么 "gem"和 "sudo gem"的安装目录不同?