【问题标题】:Cannot load files using require无法使用 require 加载文件
【发布时间】:2013-02-17 05:53:13
【问题描述】:

我刚刚下载了 Ruby 2.0,当我尝试运行一个简单的 Sinatra 应用程序时,require 出现了严重问题:

/Users/Kuba/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- sinatra (LoadError)
from /Users/Kuba/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from test.rb:1:in `<main>'

此外,我现在遇到问题的这个程序和其他程序在我使用 Ruby 1.8.7 时运行良好。

我该怎么办?

【问题讨论】:

    标签: ruby ruby-2.0


    【解决方案1】:

    我今天升级到>= 1.9时也遇到了这个问题,我得到了这篇文章:“Upgrading From REE 1.8.7 to Ruby 1.9.3

    您的问题的相关部分,如您的评论中所述:

    但是我不使用任何 gem 的程序,而只是我自己制作的其他文件,给了我相同的结果

    来自文章1

    加载路径:

    在 Ruby 1.9.3 中,LOAD_PATH 不再包含“.”因为它被认为是一种安全风险。您可以在需要文件时显式添加它、使用绝对路径或使用require_relative

    【讨论】:

    • 激进的。感谢require_relative 提示。
    【解决方案2】:

    你也安装了 gems 吗?

    Ruby 2.0 是一个全新的安装。 安装 ruby​​ 2.0 并不意味着您保留已安装的 gem。

    这不是 Ruby 2.0 特定的。据我所知,每个新的 ruby​​ 安装都有自己的宝石。

    有管理不同红宝石的工具:

    • rvm(ruby 版本管理器)
    • pik 用于 Windows

    【讨论】:

    • 但是我不使用任何 gem 的程序,而只是我自己制作的其他文件,给了我相同的结果
    • Sinatra 是一颗宝石。你如何使用红宝石?你是从 shell 还是从 web 应用程序使用 ruby​​?也许您在 Web 应用程序中使用了 ruby​​,却没有意识到您使用了额外的 gem。
    • 好的,但我也尝试运行其他程序,而不仅仅是这个使用 sinatra 的程序。他们中的一些人使用要求附加了其他文件(一些模块和东西),他们都拒绝工作。而且我知道它们写得正确,因为我之前已经多次使用它们
    • 如果你想知道的话,我会在 mac 山狮上使用终端运行这些程序
    • 你能看一下/Users/Kuba/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/gems/2.0.0/gems吗?在那里,您应该会看到所有已安装的 ruby​​ 2.0.0 安装的 gem。是否有 sinatra(或其他缺失的宝石之一)?
    【解决方案3】:

    您使用的库可能位于 Ruby 1.8 的目录下。我认为在 Ruby 2.0 下重新安装所需的库是个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2016-01-24
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多