2

我遇到了一个问题,我构建了一个脚本来通过 Boxcar 发送通知。该脚本已#!/usr/bin/env ruby设置在顶部,但是当 SABnzb 触发后处理脚本时,它会出现以下错误:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- boxcar_api (LoadError) from
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' from /Applications/Sick-Beard/autoProcessTV/sabnzb-notification.rb:4

此外,当我从终端运行脚本时,它执行得很好。只有当 SABnzb 在后处理中执行它时。

如果我运行which ruby,它们都会输出正确版本ruby -v/usr/bin/env ruby -vRuby。

$ which ruby
/Users/ericc/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
$ ruby -v
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin12.2.0]
$ /usr/bin/env ruby -v
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin12.2.0]
$ rvm -v
rvm 1.16.13 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

~/.bash_profile

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

任何人都知道为什么要加载 Ruby 1.8 而不是 RVM?

4

2 回答 2

1

SABnzb 是在不知道您的 rvm 安装的环境中启动的。有几种方法可以解决这个问题:

  1. 明确说明脚本正在调用的 ruby​​。(即-将shebang更改为#!/Users/ericc/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
  2. 在调用脚本之前编写一个设置环境的包装器 shell 脚本。让 SABnzb 首先调用包装脚本。
  3. 编辑启动 SABnzb 的 init 脚本并将 rvm 环境添加到其中。这仅在 SABnzb 以安装 rvm 的用户身份启动时才有效。
  4. 如果 SABnzb 以与 rvm 安装不同的用户身份运行,则全局安装 rvm 或以运行 SABnzb 的同一用户身份安装,然后编辑 SABnzb 初始化脚本以具有 rvm 环境设置脚本。
于 2012-10-14T19:03:08.540 回答
0

对你有用rvm use ruby-1.9.3-p286 --default吗?

于 2012-10-14T17:28:16.457 回答