Tôi đang xây dựng một Rails Engine để xử lý tất cả xác thực và ủy quyền trên nhiều ứng dụng. Tất cả các ứng dụng này đang sử dụng Devise atm để xác thực của chúng. Tôi muốn di chuyển nó vào một động cơ mà sau đó có thể được gắn vào tất cả các ứng dụng này để chúng tự động có tất cả các chức năng tạo ra.Ứng dụng Rails không tìm thấy chức năng Devise khi được gắn từ Engine
Tôi đã làm theo tất cả các bước từ hướng dẫn "Phát triển trong động cơ" trên wiki phát triển. Sự cố Tôi đang chạy đến là tôi không thể sử dụng các chức năng như 'current_user' và 'new_user_session_path' trong bộ điều khiển của các ứng dụng chính của mình.
Các lỗi tôi nhận được trong việc áp dụng chính là:
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
Động cơ không có một isolate_namespace. Tôi đã thêm Devise làm phụ thuộc vào tệp engine.gemspec và loại bỏ Devise khỏi Gemfile trong ứng dụng chính. Động cơ được gắn kết trong việc áp dụng chính như:
mount Engine::Engine, at: 'idms'
Ở routes của động cơ i có đưa ra configuered như:
devise_for :users, {
class_name: "IdmsGem::User",
module: :devise
controllers: { sessions: "devise/sessions" }
}
các initializers/file devise.rb được như sau:
require 'devise/orm/active_record'
Devise.setup do |config|
config.router_name = '/idms_gem'
end
mô hình sử dụng trong động cơ:
module Engine
class User < ActiveRecord::Base
devise :database_authenticatable
self.table_name = "users"
end
end
Im sử dụng Rails 4.2.1 với Devise 3.5.1 trên Ruby 2.2.2.
Câu hỏi của tôi là, làm cách nào để tôi có thể cho phép các bộ điều khiển và chế độ xem trong các chức năng truy cập ứng dụng chính của tôi được thiết lập trong công cụ của tôi?
Mọi trợ giúp đều được chào đón! Tôi đã googling và cố gắng tất cả mọi thứ trong vài ngày qua bây giờ. Cảm ơn mọi người!
EDIT: tuyến Rake cho đầu ra sau đây:
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
Bạn thấy thế nào nếu bạn cào tuyến? –
Tôi đã chỉnh sửa bài đăng của mình bằng đầu ra các tuyến đường rake có liên quan. Cảm ơn! –