RoR:Sinatra产生错误“未初始化的常数”

时间:2010-10-17 21:49:04

标签: ruby-on-rails sinatra

我是Ruby on Rails(以前和当前的PHP专家)的新手,请原谅我的无知,但是我试图让Sinatra作为中间件工作,重定向一些旧网址,因为我尝试了gem rack-rewrite而不能让它工作。

我正在使用ASCIIcast中的代码示例,所以在我的routes.rb中我有以下内容:

root :to => HomeApp

(^我只重定向根用于测试)

在我的lib文件夹中,我有home_app.rb

class HomeApp < Sinatra::Base  
  get "/" do  
    "Hello from Sinatra"  
  end  
end 

当我启动服务器(或者它已经运行)时,它会产生错误:

routes.rb:10: uninitialized constant HomeApp

似乎它只是不知道lib / home_app.rb文件。

我已将Sinatra包含在我的Gemfile中并运行了bundle install并确认它已包含在内。

我只是想将旧网址从旧网站重新路由到我的新ruby应用程序,但无法使这些中间件/机架工作正常。所有文档都假设您不是全新的,或者是针对3.0之前的RoR。

1 个答案:

答案 0 :(得分:2)

如果要重定向某些网址,则无需使用Sinatra。您可以使用新的redirect方法。请参阅Rails Dispatch article

match "/stories/:year/:month/:day/:name" => redirect("/%{name}")

constraints :user_agent => /iPhone/, :subdomain => /^(?!i\.)/ do
  match "*path" => redirect {|params, req| "http://i.myapp.com/#{req.fullpath}" }
end

在您的特定情况下,问题是未加载HomeApp类。将/ lib文件夹添加到更改application.rb

的加载路径
config.autoload_paths += %W( #{config.root}/lib )

require文件。