Я использую Clearance для аутентификации и пытаюсь установить корень в зависимости от того, вошел ли пользователь в систему или нет. Вход в систему, выход из системы и создание/удаление пользователей прекрасно работают.Ошибка маршрутизации «неинициализированная постоянная» с использованием зазора
Я следую за этим article from Thoughtbot, где я добавил ограничение на свой маршрут.
# Logged in user
root to: "dashboard#index", constraints: Clearance::SignedInConstraint`
# Visitor
root to: "home#index"
И я также создал signed_in_constraint.rb в/Lib/клиренса, который выполняет проверку:
module Clearance
class SignedInConstraint
def self.matches?(request)
request.env[:clearance].signed_in?
end
end
end
Если я открываю рельсы консоль и проверьте зазор, я не получаю ошибки, так что загрузка модуля Clearance, но не SignedInConstraint из lib.
rails console
Loading development environment (Rails 4.0.0)
irb(main):001:0> Clearance
=> Clearance
irb(main):002:0> Clearance::SignedInConstraint
NameError: uninitialized constant Clearance::SignedInConstraint
Я также перезагрузил свой сервер (работает Наковальня и PostgresApp) несколько раз, как в this ticket на репо Github.
Использование Rails 4 на Ruby 2.0.
Thanks
Спасибо Dan - я видел это в документах, но я получаю 'ArgumentError: неверное имя маршрута, уже используемое: 'root''. Требуется ли дополнительная логика? – colourgarden
Кажется, что это (без дубликатов имен) специально было встроено в Rails 4. Теперь я назвал маршруты, используя ': as', и он работает правильно. Спасибо за вашу помощь. [Источник] (https://github.com/plataformatec/devise/issues/2393) – colourgarden