首页 > 解决方案 > Ruby 需要导致未定义的局部变量

问题描述

我完全是 Ruby 的菜鸟。我希望执行从 Amazon AWS IoT 页面获取的文件,但我在初始要求方面遇到了问题,如下所示。

我使用的是 Ubuntu 18.04,我已经使用sudo apt-get install ruby ​​-full 安装了 ruby ​​,还安装了 sudo gem install mqtt。该文件名为 iot-connector.rb。我用ruby​​ iot-connector.rb执行文件。很明显它找不到这些需要文件,但是我如何告诉 Ruby 找到它们。谢谢。

require ‘rubygems’
require ‘mqtt’

#more code....

我得到的错误:

Traceback (most recent call last):
iot-connector.rb:1:in `<main>': undefined local variable or method `‘rubygems’' 
for main:Object (NameError)

标签: rubyamazon-web-servicespathrubygemsundefined

解决方案


您使用了错误类型的引号,使用常规引号而不是反引号:

require 'rubygems'
require 'mqtt'

反引号用于运行 shell 命令,顺便说一句。你在这里遇到红宝石错误很奇怪,我希望像这样:

[29] pry(main)> `rubygems`
Errno::ENOENT: No such file or directory - rubygems

推荐阅读