Authentication 找不到sinatra身份验证路由

Authentication 找不到sinatra身份验证路由,authentication,routes,sinatra,Authentication,Routes,Sinatra,我正在尝试将sinatra认证宝石添加到sinatra应用程序中,当它在其中并完成部分工作时,出于某种原因,路由似乎没有被添加。代码基础: require 'sinatra' require 'digest/sha1' require 'rack-flash' require 'mongo_mapper' require 'sinatra-authentication' MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27

我正在尝试将sinatra认证宝石添加到sinatra应用程序中,当它在其中并完成部分工作时,出于某种原因,路由似乎没有被添加。代码基础:

require 'sinatra'
require 'digest/sha1'
require 'rack-flash'
require 'mongo_mapper'
require 'sinatra-authentication'

MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27017, :pool_size => 5, :pool_timeout => 5)
MongoMapper.database = 'cms'

module CmsMod
  class CmsApp < Sinatra::Base
    use Rack::Session::Cookie, :secret => 'something secret'
    use Rack::Flash

    get '/' do
      #redirect to('/list') # commented out for testing
    end

    get '/private' do
      login_required
      'Protected Page'
    end
需要“sinatra”
需要“摘要/sha1”
需要“机架闪存”
需要“mongo_映射器”
需要“sinatra身份验证”
MongoMapper.connection=Mongo::connection.new('127.0.0.1',27017,:pool\u size=>5,:pool\u timeout=>5)
MongoMapper.database='cms'
模块CmsMod
类CmsApp'something secret'
使用Rack::Flash
获取“/”do
#重定向到('/list')#已注释掉以进行测试
结束
获取“/private”do
需要登录
“受保护页面”
结束
然后是其他的事情。症状是将浏览器指向我的正常路线可以正常工作。转到“/private”会正确地重定向到“/login”,但我收到了旧的“Sinatra不知道这首小曲”消息;如果我尝试直接访问“/login”,则相同。我试着用“binding.pry”来检查get块中的东西,从中我可以看出这些路径不存在。如果您有任何关于可能导致这种情况的想法,我们将不胜感激。

我们已经了解了,它是作为一个扩展编写的,但是示例和文档没有提到扩展是如何注册的。试试这个:

module CmsMod
  class CmsApp < Sinatra::Base
    register Sinatra::SinatraAuthentication  # <= this is the missing magic line.
变成:

use Rack::Session::EncryptedCookie, :secret => 'something secret'

似乎它也需要“haml”gem,所以如果你不使用haml(就像我使用slim),你应该在你的项目中包含haml,这样它才能工作,真是太痛苦了


还记得在视图中设置布局,因为默认情况下它将查找视图/布局。haml

我也有同样的问题,但还没有找到解决方案。@Masonoise-你找到原因了吗?我最后把它放在一边,还不需要再回来,很遗憾……使用rubygems的0.4.1是正确的,但是0.4.2在github上,不需要haml。看见
use Rack::Session::EncryptedCookie, :secret => 'something secret'