微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 机架错误 – LoadError:无法加载此类文件

试图通过tekpub机架教程但遇到此错误.
Boot Error

Something went wrong while loading app.ru

LoadError: cannot load such file -- haiku

在我尝试运行的应用程序所在的目录中有一个名为haiku.rb的文件,但是在尝试运行程序时出现上述错误.这是代码

class EnvironmentOutput


  def initialize(app=nil)
    @app = app
  end


  def call(env)
    out = ""

    unless(@app.nil?)
 response = @app.call(env)[2]
 out+=response
end

env.keys.each {|key| out+="<li>#{key}=#{env[key]}</li>"}
["200",{"Content-Type" => "text/html"},[out]]
  end
end

require 'haml'
require 'haiku'

class MyApp
  def call(env)

  poem = Haiku.new.random
  template = File.open("views/index.haml").read
  engine = Haml::Engine.new(template)
  out = engine.render(Object.new,:poem => poem)

   ["200",out]
  end
end

use EnvironmentOutput
run MyApp.new

我确定它是一个错误,因为代码与教程中的相同,它对他有用…

谢谢

解决方法

你想要阅读ruby加载路径($LOAD_PATH或$:).认情况下,ruby有一个加载路径,其中包含安装宝石的任何位置,这就是为什么你可以在不提供haml gem所在位置的完整路径的情况下需要’haml’.

当你输入require’haiku’时,你基本上是告诉ruby在它的加载路径中找到一个名为haiku.rb的文件,而LoadError来自ruby没有在$中列出的任何目录中找到你的haiku.rb文件LOAD_PATH(或$:,这只是$LOAD_PATH的简写).

你可以用(至少)两种方式解决这个问题:

>更改要求’haiku’要求File.dirname(__ FILE__)’/ haiku.rb’明确告诉ruby要加载哪个文件>将当前工作目录添加到加载路径:$:.push(File.dirname(__ FILE__)).这样你就可以保持需要’haiku’部分.

原文地址:https://www.jb51.cc/ruby/268992.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐