我有一个令人困惑的问题。我想从另一个调用一个 ruby 脚本。
考虑到这一点,我创建了一个 testscript.rb 并执行了它,它包含这段代码,
require './paypal.rb'
puts paypal['L_AMT0']
此代码返回一个数字,这是我的贝宝余额。它依赖于使用 ruby-paypal gem 的 paypal.rb 文件。当我执行 ruby testscript.rb 时,我得到了我的贝宝余额的输出,这意味着它工作正常。这告诉我,我从另一个 RB 调用一个 RB 的方法没问题,因为在上述场景中,testscript.rb 正在获取一个从 paypal.rb 返回的变量。
使用相同的逻辑,我将上述代码插入到另一个名为 SiriProxy 的程序中。这是一个红宝石程序。我需要它来获得我的贝宝余额。
所以在那个程序里面,我做了一个require paypal.rb,它失败了,因为它找不到它,所以我在require中设置了一个绝对路径来修复它。
但是,当 SiriProxy(另一个 ruby rb 给我一个问题)尝试运行 puts paypal['L_AMT0'] 时,它会导致错误并结束程序。
这是错误,
[Info - Plugin Manager] Say: Checking Paypal Balance
/home/siriproxy/.rvm/gems/ruby-1.9.3-p194@SiriProxy/gems/siriproxy-0.3.0/plugins/siriproxy-example/lib/siriproxy-example.rb:47:in `block in <class:Example>': undefined local variable or method `paypal' for #<SiriProxy::Plugin::Example:0x931a228> (NameError)
from /home/siriproxy/.rvm/gems/ruby-1.9.3-p194@SiriProxy/bundler/gems/cora-1edcfb9073d5/lib/cora/plugin.rb:47:in `instance_exec'
from /home/siriproxy/.rvm/gems/ruby-1.9.3-p194@SiriProxy/bundler/gems/cora-1edcfb9073d5/lib/cora/plugin.rb:47:in `block (2 levels) in process'
在上面的输出中,问题似乎是它不理解“paypal”,如下所示:
未定义的局部变量或方法“paypal”
但是,我不明白为什么,因为在 testscript.rb 我做了完全相同的事情并且它有效。
任何人都可以帮忙吗?谢谢你。