在应用程序中需要 Sinatra Gem 时出现 LoadError

0 ruby sinatra learn-ruby-the-hard-way

我正在关注教程http://learnrubythehardway.org/book/ex50.html,它提供了:

创建尽可能最基本的 Sinatra 应用程序。将以下代码放入bin/app.rb

require 'sinatra'

set :port, 8080
set :static, true
set :public_folder, "static"
set :views, "views"

get '/' do
    return 'Hello world'
end
Run Code Online (Sandbox Code Playgroud)

我安装了 gem 和 Sinatra 没有任何问题。我还将教程中的内容复制app.rb到本地bin/app.rb文件中。

我运行它:ruby bin/app.rb

终端输出:

/home/t/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require': cannot load such file -- sinatra (LoadError)
    from /home/t/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require'
    from bin/app.rb:1:in `<main>
Run Code Online (Sandbox Code Playgroud)

当我运行时rake test它通过了测试。有什么问题?

the*_*Man 5

如果你按照他们的指示你就跑了sudo gem install sinatra。不要sudo在您的环境中使用,因为您正在使用 rbenv。

当您使用 时sudo,您的系统 Ruby 安装了 Sinatra,而不是 rbenv 设置的当前选择的 Ruby。

阅读 rbenv 的“安装 Ruby gems ”文档。

要解决该问题,只需运行gem install sinatra,这将在您的 rbenv 配置的 Ruby 中安装 Sinatra 及其依赖项。

这不会将 Sinatra 从 System Ruby 中删除,但它的存在应该是安全且良性的。

使用 rbenv 不能与 sudo 一起使用吗? ”也会有帮助。