Ich baue eine Rails Engine, um die gesamte Authentifizierung und Autorisierung über mehrere Anwendungen hinweg durchzuführen. Alle diese Anwendungen verwenden Devise atm für ihre Authentifizierung. Ich möchte dies in eine Engine verschieben, die dann in all diesen Anwendungen installiert werden kann, so dass sie automatisch alle Gerätefunktionen haben.Die App "Schienen" findet keine Devise-Funktionen, wenn sie von der Engine bereitgestellt wird
Ich folgte alle Schritte aus dem "Devise in a engine" Guide auf dem Devise Wiki. Das Problem Ich renne in ist, dass ich Funktionen wie 'current_user' und 'new_user_session_path' in den Controllern meiner Hauptanwendungen nicht verwenden kann.
Der Fehler, ich bin in der Hauptanwendung bekommen ist:
Showing .../main_app/app/views/shared/_header.haml where line #19 raised:
undefined local variable or method `new_user_session_path' for #<#<Class:0x007f1578968040>:0x007f157897b348>
= link_to t('user.login'), new_user_session_path
Der Motor keine isolate_namespace hat. Ich habe Devise als Abhängigkeit in der Datei engine.gemspec hinzugefügt und Devise aus der Gemfile in der Hauptanwendung entfernt. Der Motor ist in der Hauptanwendung montiert, wie:
mount Engine::Engine, at: 'idms'
In den Routen des Motors i ersinnen haben configuered wie:
devise_for :users, {
class_name: "IdmsGem::User",
module: :devise
controllers: { sessions: "devise/sessions" }
}
Die initializers/devise.rb Datei wird wie folgt:
require 'devise/orm/active_record'
Devise.setup do |config|
config.router_name = '/idms_gem'
end
Das Modell Benutzer im Motor:
module Engine
class User < ActiveRecord::Base
devise :database_authenticatable
self.table_name = "users"
end
end
Ich benutze Rails 4.2.1 mit Devise 3.5.1 auf Ruby 2.2.2.
Meine Frage ist, wie kann ich meine Controller und Ansichten in meinen Hauptanwendungen zugreifen Funktionen von Devise, die in meiner Engine konfiguriert ist?
Jede Hilfe ist willkommen! Ich habe in den letzten paar Tagen gegoogelt und alles versucht. Danke jeder!
EDIT: Rake Routen geben die folgende Ausgabe:
Prefix Verb URI Pattern Controller#Action
idms_gem /idms IdmsGem::Engine
{AND THE REST OF MY MAIN APP ROUTES...}
Routes for IdmsGem::Engine:
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
root GET / devise/sessions#new
Was sehen Sie, wenn Sie Routen rechen? –
Ich habe meinen Post mit den relevanten Rake-Routen bearbeitet. Vielen Dank! –