我无法在 ruby 中加载库

I can't load library in ruby

我在 Ruby 中加载库时遇到问题。 我想加载乱码、机械化、着色。 所以我首先安装了lib:

sudo gem install gibberish mechanize colorize

我在 Ubuntu 18.04 LTS 和 macOS 10.14.4 上都没有遇到错误。

我的脚本内容如下:

#!/usr/bin/env ruby

require 'mechanize'
require 'colorize'
require 'gibberish'

当我 运行 时,出现以下错误:

Traceback (most recent call last):
    2: from test:3:in `<main>'
    1: from /snap/ruby/167/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/snap/ruby/167/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- mechanize (LoadError)

此外,当我更改库的 require 顺序时,例如

#!/usr/bin/env ruby

require 'gibberish'
require 'mechanize'
require 'colorize'

我得到乱码错误。 我该如何解决?谢谢

你可以这样关注

第 1 步:创建一个文件夹并移动到这个新创建的文件夹。

$ mkdir my_folder
$ cd my_folder

第 2 步:在此文件夹中新建 Gemfile 并放入所需的宝石。

# my_folder/Gemfile

source "https://rubygems.org"

gem "colorize"
gem "mechanize"
gem "gibberish"

第 3 步:运行bundle install 安装所需的 gem。

第 4 步: 创建一个 ruby 文件并将您需要的代码放入其中 运行.

# my_folder/my_file.rb

require "mechanize"
require "colorize"
require "gibberish"

puts "Hello World"

到运行这个文件文件请使用ruby my_file.rb。谢谢:-)

这是因为您正在使用 sudo 安装 gem,但 运行 使用 non-sudo 用户的脚本。如您所见,如果您 运行 sudo gem list --localgem list --local 将给出不同的结果,因为 gem 使用 sudo 安装可能对用户不可用。

因此最好使用 ruby 版本管理器 rvm or rbenv,它允许为您的每个应用程序提供单独的环境。或者您可以使用 gem install --user-install <gemname> 来安装 gem 而无需 sudo。