【问题标题】:chruby, and Ruby gems "cannot load such file — "chruby 和 Ruby gems“不能加载这样的文件——”
【发布时间】:2018-11-08 05:48:24
【问题描述】:

我最近搬到了新的 iMac 并进行了全新安装。因此,并非一切都像在我的 MBP 上那样工作。我进行了@awsmsce 建议的几处更改,并将其合并到以下内容中。还是有问题。

使用 gem mini_exiftool 的 ruby​​ 脚本在从 TextMate 运行时会引发错误(从命令行运行时会出现同样的错误)。这是脚本的开头。

#!/usr/bin/env ruby
require 'rubygems'
require 'fileutils'
include FileUtils
require 'find'
require 'yaml'
require "time"
require 'shellwords'
require 'mini_exiftool'

TextMate 报告LoadError: cannot load such file — mini_exiftool

method require in kernel_require.rb at line 55

kernel_require.rb 的路径是 /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb,这可能表明存在问题。运行的红宝石与宝石所在的地方不同。但是@awsmsce 现在建议在/Users/gscar/.rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb 中进行更改,所以这不是问题

终端chruby >> * ruby-2.5.1

ruby -v >> ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

gem list >> mini_exiftool (2.9.0)

exiftool -ver >> 11.17

TextMate PATH 变量为 $PATH:$HOME/.rubies/ruby-2.5.1/bin:$HOME/.rubies/ruby-2.5.1/shims:/usr/local/bin:/usr/texbin:/opt/local/bin

system('gem env'):

RubyGems Environment:
  - RUBYGEMS VERSION: 2.5.2.3
  - RUBY VERSION: 2.3.7 (2018-03-28 patchlevel 456) [universal.x86_64-darwin17]
  - INSTALLATION DIRECTORY: /Users/gscar/.gem/ruby/2.5.1/gems
  - USER INSTALLATION DIRECTORY: /Users/gscar/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/gscar/.gem/ruby/2.5.1/gems/bin
  - SPEC CACHE DIRECTORY: /Users/gscar/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-17
  - GEM PATHS:
     - /Users/gscar/.gem/ruby/2.5.1/gems
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Users/gscar/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/bin
     - /Users/gscar/.rubies/ruby-2.5.1/bin
     - /Users/gscar/.rubies/ruby-2.5.1/shims
     - /usr/local/bin
     - /usr/texbin
     - /opt/local/bin

Gem.path: ["/Users/gscar/.gem/ruby/2.5.1/gems"]

我在旅行一个月后更新了它,但仍然需要这个脚本。我更改了 gems 的顺序,显示一些下载但没有其他的。 gem list 显示 mini_exiftool (2.9.0) 等等。如果我硬编码到require '/Users/gscar/.gem/ruby/2.5.1/gems/mini_exiftool-2.9.0/lib/mini_exiftool.rb',那么脚本在另一个 gem 上也会失败。

【问题讨论】:

  • 真的不希望这样...但是您是否注意到该 require 语句上没有结束单引号?
  • 你能从文件内部做system('gem env'),没有第二个require语句并发布结果
  • 有趣。 .rubies/ruby-2.5.1/bin/ruby 是否应该以 ~/ 开头?是在你的主目录吗?还是假设在您运行脚本的目录中?
  • .rubies 在我的主目录中。我正在从~/Documents/Ruby/Photo handling/ 运行脚本。看看我帖子底部的新增内容。感谢您的光临。
  • 好的,听起来就是这样。你在哪里设置你的路径?可能像 ~/.bash_profile 之类的?,你提到你 TextMate PATH variable is $PATH:.rubies/ruby-2.5.1/bin/ruby:/usr/local/bin:/usr/texbin:/opt/local/bin .... 如果你知道在哪里调整它,只需将 ~/ 放在 .rubies/ruby-2.5.1/bin/ruby 前面

标签: ruby rubygems textmate chruby


【解决方案1】:

好的,我想我现在有了。来一波:

将您的 PATH 设置为以下内容:

export PATH=$PATH:$HOME/.rubies/ruby-2.5.1/bin:$HOME/.rubies/ruby-2.5.1/shims:/usr/local/bin:/usr/texbin:/opt/local/bin

将您的 TM_RUBY 变量设置为:

$HOME/.rubies/ruby-2.5.1/bin/ruby

我认为您当前已将 ruby​​ 添加到路径中,但未添加二进制文件或 shims。

如果这不起作用,请尝试puts Gem.path,并确保它指向正确的位置。

确保您尝试调用的 gem 在您期望的位置 gem which mini_exiftool

如果他们错了,你可能需要设置这些

export GEM_HOME=[WHATEVER YOUR GEM DIR IS] export GEM_PATH=[WHATEVER YOUR GEM DIR IS]

【讨论】:

  • 我向 OP 添加了新错误。我试着按照它说的去做,但无济于事。我将 GEM_HOME 和 GEM_PATH 添加为 $PATH:$HOME/.gem/ruby/2.5.1gem which mini_exiftool/Users/gscar/.gem/ruby/2.5.1/gems/mini_exiftool-2.9.0/lib/mini_exiftool.Redondo Beach
  • 哦,不,GEM_HOME 和 GEM_PATH 应该只是 $HOME/.gem/ruby/2.5.1/gems(它实际上需要包含“gems”目录,并且不应该有 $PATH)
  • 谢谢。我想通了。摆脱了 TM_PATH 并将结果发布到 OP 中,并更改了 gem env 的结果。轻微错误。过一会再发一次OP。
  • 为了配合 gem 路径的更新,这里是有问题的 gem 的路径:/Users/gscar/.gem/ruby/2.5.1/gems/mini_exiftool-2.9.0/
  • TM_RUBY 指向正确的位置:/Users/gscar/.rubies/ruby-2.5.1/bin/ruby。路径直接复制。 gem env 不同意。但是 TextMate 在运行窗口中报告ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]。 PS:我没有shims 目录。 Gem.path: ["/Users/gscar/.gem/ruby/2.5.1/gems"]
【解决方案2】:

现在可以了。不幸的是,我不太确定修复是什么,因此将其称为答案可能不公平,而且我仍然在从 TextMate 运行 Ruby 脚本时遇到问题。我在

chruby ruby-2.6.2

TM_PATH$HOME/.rubies/ruby-2.6.2/bin/ruby

PATH$PATH:/usr/local/bin:/usr/texbin:/opt/local/bin

TM_RUBY$HOME/.rubies/ruby-2.6.2/bin/ruby

适用于未设置的 GEM_PATHGEM_HOME。但是,当它们被设置时,我会收到此错误:

/Library/Ruby/Site/2.3.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem rspec-core (>= 0.a) with executable rspec (Gem::GemNotFoundException)
from /Library/Ruby/Site/2.3.0/rubygems.rb:262:in `bin_path'
from /usr/local/bin/rspec:22:in `<main>'` 

这很可能与我的PATH 设置有关。我现在发布这个,因为我回来重新审视这个问题。我可以从命令行运行 Ruby 脚本,这是一种解决方法。

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多