我试图在一个简单的sinatra应用程序中设置sinatra认证gem,并遇到sinatra找不到正确视图的问题。我知道sinatra-authentication默认使用haml,但我在这个应用程序中使用erb。
考虑到这一点,我在sinatra- authentication文档中发现,有一个设置允许你改变模板引擎,通过添加以下内容到你的应用程序文件:
configure do
set :template_engine, :erb # for example
end
我已经将此添加到我的app.rb文件中,并且sinatra仍在寻找注册。当我尝试在我的应用程序中点击/signup路由时。
注意事项:
我已经在我的Gemfile中包含了这个gem,并成功地在我的应用上运行了一个bundle install。
source 'https://rubygems.org' gem 'sinatra' gem 'data_mapper' gem 'pg' gem 'dm-postgres-adapter' gem 'sinatra-authentication'
我在文档中看到一些东西,建议我可能需要指定视图文件的位置,所以我在我的配置块中添加了以下内容。
set :sinatra_authentication_view_path, Pathname(__FILE__).dirname.expand_path + "views/"
**我想我已经要求gem准确地在我的应用程序文件中添加
require "sinatra-authentication" use Rack::Session::Cookie, :secret => 'mys3cr3tk3y'
这是我在sinatra应用程序根目录下的app.rb文件的当前表示。https://gist.github.com/rriggin/5378641#file-gistfile1-txt
下面是sinatra抛出的错误截图:http://cl.ly/image/0y041t0K3u3O
当我在本地运行应用程序时,在我的本地数据库中按预期创建了一个'dm-users'表。
是否有另一个配置设置,我错过了为了得到sinatra身份验证,以正确地寻找动词模板,而不是haml文件。任何帮助都将非常感激。
谢谢
规格没有测试template_engine设置是否工作,并且查看该设置的调用方式,我认为它不正确,即
send settings.template_engine, get_view_as_string("index.#{settings.template_engine}"), :layout => use_layout?
最好写成:
send app.settings.template_engine, get_view_as_string("index.#{app.settings.template_engine}"), :layout => use_layout?
我就是这么想的。如果你分叉了这个项目,改变了代码行并把它添加到你的Gemfile中,它就可以工作了,那么考虑为它写一个快速的规范,你就可以改进这个项目的主线,同时也解决了你的问题。