2016-11-23 2 views
1

Мне нужна простая аутентификация для блога. Для одного человека. Просто войдите на сайтКак установить аутентификацию в Sinatra?

Невозможно настроить sinatra_warden. Написать линию

require 'rubygems' 
require 'sinatra' 
require 'pry-byebug' 
require "sinatra/activerecord" 
require "carrierwave" 
require "carrierwave/orm/activerecord" 
require 'sinatra_warden' 
require 'warden' 

register Sinatra::Warden 

use Rack::Session::Pool 

в app.rb, но я получаю сообщение об ошибке

NoMethodError: undefined method `register' for main:Object 

камень sinatra_warden был установлен. а также написал require "warden" & require "sinatra_warden"

sinatra_warden 0.3.2

надзиратель 1.2.6

Когда я добавляю метод authorize! в контроллере, я получаю сообщение об ошибке

undefined method `authorize!' 
+0

Показать угождать полный код, в котором вы добавляете эту строку. –

+0

добавлено в тело вопроса – Andrey

ответ

1

Потому что вы Ждут» t используйте sinatra/base, вы должны добавить sinatra/namespace. Добавьте к app.rb, для этого потребуется require "sinatra/namespace".

Sinatra::Namespace - это расширение, которое добавляет пространства имен в приложение . Эти пространства имен позволят вам совместно использовать префикс пути для маршрутов в пространстве имен и определять фильтры, условия и обработчики ошибок исключительно для них. Кроме того, вы можете также регистраторов-справочников и расширения, которые будут использоваться только в пределах пространства имен .

Или изменить приложение к модульному стилю:

require "sinatra/base" 

class MyApp < Sinatra::Base 
    register Sinatra::Warden 

    # The rest of your modular application code goes here... 
end 
+0

в app.rb добавлено 'require 'sinatra/base" и 'class Myapp Andrey

+0

log 'Sinatra :: Base # опции устарели и будут удалены, вместо этого используйте #settings.' – Andrey

+0

@ Chumak - это еще один вопрос). Отправьте еще один вопрос и, возможно, я могу помочь. –

Смежные вопросы