我正在尝试在一个简单的sinatra应用程序中设置sinatra-authentication gem,并遇到sinatra无法找到正确视图的问题。我知道sinatra身份验证默认使用haml,但我在这个应用程序中使用erb。
考虑到这点,我发现in the sinatra-authenticaiton docs that there is a setting which allows you to change the template engine,将以下内容添加到您的应用文件中:
configure do
set :template_engine, :erb # for example
end
我已将此添加到我的app.rb文件中,当我尝试在我的应用中点击/ signup路线时,sinatra仍在寻找signup.haml。
几点说明:
我已经在我的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/"
**我认为我已经在我的应用文件中准确地添加了
require "sinatra-authentication"
use Rack::Session::Cookie, :secret => 'mys3cr3tk3y'
这个要点是我的sinatra应用程序根目录中app.rb文件的当前表示。 https://gist.github.com/rriggin/5378641#file-gistfile1-txt
以下是错误sinatra throws的屏幕截图:http://cl.ly/image/0y041t0K3u3O
当我在本地运行应用程序时,会在我的本地数据库中按预期创建“dm-users”表。
是否有其他配置设置我缺少才能让sinatra身份验证正确查找erb模板而不是haml文件。任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
The specs don't test that the template_engine setting works,看着the way the setting is called,我认为这是不正确的,即
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?
这就是我的想法。如果您分叉项目,更改行和add it to your Gemfile然后它会工作,然后考虑为它编写一个快速规范,您将改进该项目的主线并修复您的问题。