簡體   English   中英

機架錯誤 - LoadError:無法加載此類文件

[英]Rack Error — LoadError: cannot load such file

試圖通過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",{"Content-Type" => "text/html"}, out]
  end
end

use EnvironmentOutput
run MyApp.new

我確定它是一個小錯誤,因為代碼與教程中的相同,它對他有用...

謝謝

您需要閱讀ruby加載路徑( $LOAD_PATH$: $LOAD_PATH 默認情況下,ruby有一個加載路徑,其中包含安裝寶石的任何位置,這就是為什么你可以在不提供haml gem所在位置的完整路徑require 'haml'情況下require 'haml'

當你輸入haiku.rb require 'haiku' ,你基本上告訴ruby在它的加載路徑中找到一個haiku.rb文件,而LoadError來自ruby沒有在$LOAD_PATH列出的任何目錄中找到你的haiku.rb文件$LOAD_PATH (或$: $LOAD_PATH這只是$LOAD_PATH簡寫)。

你可以用(至少)兩種方式解決這個問題:

  1. 更改require 'haiku' require File.dirname(__FILE__) + '/haiku.rb'明確告訴ruby要加載哪個文件

  2. 將當前工作目錄添加到加載路徑: $:.push(File.dirname(__FILE__)) 這樣你就可以保持require 'haiku'一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM