![](/img/trans.png)
[英]`require': cannot load such file — rack-webconsole (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
簡寫)。
你可以用(至少)兩種方式解決這個問題:
更改require 'haiku'
require File.dirname(__FILE__) + '/haiku.rb'
明確告訴ruby要加載哪個文件
將當前工作目錄添加到加載路徑: $:.push(File.dirname(__FILE__))
。 這樣你就可以保持require 'haiku'
一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.