AFr*_*ser 7 ruby rack ruby-on-rails
试图通过tekpub机架教程但遇到此错误.
Boot Error
Something went wrong while loading app.ru
LoadError: cannot load such file -- haiku
Run Code Online (Sandbox Code Playgroud)
在我尝试运行的应用程序所在的目录中有一个名为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
Run Code Online (Sandbox Code Playgroud)
我确定它是一个小错误,因为代码与教程中的相同,它对他有用...
谢谢
Fro*_*ost 21
你想要阅读ruby加载路径($LOAD_PATH或者$:).默认情况下,ruby有一个加载路径,其中包含安装宝石的任何位置,这就是为什么你可以require 'haml'不提供haml gem所在位置的完整路径.
当你输入时require 'haiku',你基本上是在告诉ruby haiku.rb在它的加载路径中LoadError找到一个名为somewhere的文件,并且来自ruby没有haiku.rb在列出的任何目录中找到你的文件$LOAD_PATH(或者$:,这只是简写$LOAD_PATH).
你可以用(至少)两种方式解决这个问题:
更改require 'haiku'为require File.dirname(__FILE__) + '/haiku.rb'明确告诉ruby要加载哪个文件
将当前工作目录添加到加载路径:$:.push(File.dirname(__FILE__)).这样你就可以保留这require 'haiku'部分.
| 归档时间: |
|
| 查看次数: |
27978 次 |
| 最近记录: |