Ruby无法加载JSON宝石?

3
当我尝试启动需要JSON gem的脚本时,它会给我一个错误:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- json (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /home/XXXXXX/XXXXXX/XXXXXX/XXXX.rb:2

有人能给我一些建议吗?


2
请发布您尝试运行的脚本内容和您正在使用的运行命令。 - Brandan
这怎么不是一个问题呢?这又是因为涉及的人们不知道答案而关闭的另一个问题吗? - Bratchley
3个回答

17

看起来你正在运行 Ruby 1.8+:

/usr/lib/ruby/site_ruby/1.8

这意味着你的Ruby不会自动加载Rubygems,因此你需要告诉它该怎么做。尝试输入:

require 'rubygems'
require 'json'

Rubygems(在命令行中称为gem)有许多可用的命令供您使用。请尝试在命令行中键入以下内容:

gem help

点击此处查看它能做什么。

目前最有用的是:

gem list json

获取以 "json" 开头的宝石列表或:

gem search json

查看名称中包含“json”的宝石清单。

目标是检查 JSON 宝石是否在其应该存在的位置。如果是,则会在命令输出中显示。

另一个有用的宝石命令是:

gem update --system

这告诉Rubygems更新自己。有时,Rubygems应用程序维护人员会发布更新,而这个命令就是告诉它使用最新版本进行引导。因为你正在运行旧版Ruby,很有可能Rubygems急需更新。但是,等等,还有更多。

由于您正在调整系统版本的Ruby,您需要使用:

sudo gem update --system

"sudo" 会暂时调整你的账户权限,使你可以拥有系统管理员能力。

一旦Rubygems升级完成,如果在listsearch命令的输出中没有出现json,那么你需要使用以下命令来安装它:

sudo gem install json

此时运行searchlist命令应该可以正常工作,并且运行带有上述两个要求的脚本应该可以正常工作。


嗨,谢谢。已经执行了 "require 'rubygems'" 和 "require 'json'",但问题仍然存在,有什么建议吗? - Tan Su
1
如果使用bundle提供执行环境,则**这可能是答案** - 在Gemfile中添加gem "json" - uvsmtid

4

你可能没有安装 JSON gem。可以在终端中使用命令 gem list 进行检查,看是否有 json,如果有则已安装,如果没有,则执行 gem install json 进行安装。安装完成后,请确保在 gem list 中找到了它。如果找到了,那么就可以开始使用了。


谢谢。如何检查宝石列表? - Tan Su
在命令终端中键入gem list - BlackHatSamurai

2

您是否已经安装了JSON gem,并且在该Gem路径下?gem install json应该就足够了。


[xxxx@gelib-057-22 Assignment2.0]$ gem install json 错误:执行gem时出错...(Gem :: FilePermissionError) 您没有写入/ usr / lib / ruby ​​/ gems / 1.8目录的权限。 - Tan Su
然后... sudo gem install json - Hock
我们相信您已经从当地系统管理员那里听取了通常的讲解。它通常可以归结为以下三点:#1) 尊重他人的隐私。 #2) 打字前先思考。 #3) 伴随着强大的力量而来的是巨大的责任。[sudo]密码:-----我尝试了密码,但它不起作用? - Tan Su
你有该用户的密码吗?在那里输入它,如果你有权限,那就可以了。否则,我建议使用类似 bundler 的工具,将你的 gem 存储在一个你可以实际写入的地方。 - Hock
我不会使用 sudo 命令,因为它可能会引起问题。你应该考虑使用 RVM(Ruby 版本管理器),从那里你可以使用 rvm gem install json。 - BlackHatSamurai
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接