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

时间:2016-06-27 19:45:49

标签: 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

我安装了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>

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

1 个答案:

答案 0 :(得分:3)

如果您按照指示操​​作,则运行sudo gem install sinatra。不要在您的环境中使用sudo,因为您使用的是rbenv。

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

阅读rbenv的“Installing Ruby gems”文档。

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

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

Using rbenv doesn't work with sudo?”也会有所帮助。