Ich habe vor kurzem meine Rails Webapp mit Redis/Sidekiq integriert. Nachdem ich mit einer Unmenge von Konfigurationen gespielt hatte, wurde mir klar, dass ich etwas durcheinander gebracht habe, weil ich mich nicht mehr bei meiner Anwendung anmelden kann. Nach Referenzieren dieser Frage: Devise: Suddenly cannot log in anymore Ich dachte, es hat etwas mit meiner config/initializers/session_store.rb zu tun, aber ich nehme an, weil ich nicht genau weiß, wie genau diese Datei funktioniert, ist es schwierig für mich, diesen Fehler zu debuggen.Redis + Devise Konfiguration Verwirrung
Hier ist die tatsächliche Fehlermeldung, wenn ich versuche, mit guten Anmeldeinformationen anmelden:
ActionController::UrlGenerationError in Devise::SessionsController#create
No route matches {:action=>"show", :controller=>"controllers"} missing required keys: [:id]
Hier ist meine session_store.rb:
Rails.application.config.session_store :cookie_store, key: '_appname_session'
AppName::Application.config.session_store :redis_store, servers: "redis://localhost:6379/0/session"
Hier ist meine routes.rb Datei:
Rails.application.routes.draw do
resources :controllers
devise_for :users
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
end
Verweis auf diesen Link: What is called session store? Ich bin mir bewusst, dass ein Session-Speicher nur s ist nach Sitzungsinformationen suchen, aber ich bin mir nicht sicher, wie sich das in diesen Fehler des Geräts einfügt.
Ich habe auch die richtige initializer Datei devise und in meiner config/Umgebungen/development.rb Ich habe
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
gemäß der Dokumentation.
Devise Initializer:
config.mailer_sender = '[email protected]' #haven't yet had the need to change this
config.secret_key = 'secret_key'
require 'devise/orm/active_record'
config.case_insensitive_keys = [:email]
config.strip_whitespace_keys = [:email]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 11
config.reconfirmable = true
config.expire_all_remember_me_on_sign_out = true
config.password_length = 6..128
config.email_regexp = /\A[^@\s][email protected][^@\s]+\z/
config.reset_password_within = 6.hours
config.sign_out_via = :delete
end
Controller 'Controller' -> Dies ist eine echte Kuriosität für mich. Ich habe keine Erinnerung daran, dies selbst zu machen, und ich bin mir nicht sicher, ob es ein Nebenprodukt eines anderen Prozesses war, dem ich gefolgt bin, aber irgendwie in meiner Bewerbung endete. Unten finden Sie:
class ControllersController < ApplicationController
before_action :set_controller, only: [:show, :edit, :update, :destroy]
# GET /controllers
# GET /controllers.json
def index
@controllers = Controller.all
end
# GET /controllers/1
# GET /controllers/1.json
def show
end
# GET /controllers/new
def new
@controller = Controller.new
end
# GET /controllers/1/edit
def edit
end
# POST /controllers
# POST /controllers.json
def create
@controller = Controller.new(controller_params)
respond_to do |format|
if @controller.save
format.html { redirect_to @controller, notice: 'Controller was successfully created.' }
format.json { render :show, status: :created, location: @controller }
else
format.html { render :new }
format.json { render json: @controller.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /controllers/1
# PATCH/PUT /controllers/1.json
def update
respond_to do |format|
if @controller.update(controller_params)
format.html { redirect_to @controller, notice: 'Controller was successfully updated.' }
format.json { render :show, status: :ok, location: @controller }
else
format.html { render :edit }
format.json { render json: @controller.errors, status: :unprocessable_entity }
end
end
end
# DELETE /controllers/1
# DELETE /controllers/1.json
def destroy
@controller.destroy
respond_to do |format|
format.html { redirect_to controllers_url, notice: 'Controller was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_controller
@controller = Controller.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def controller_params
params.require(:controller).permit(:Reminder)
end
end
Würde mich über Hilfe bei der Fehlersuche freuen!
Haben Sie etwas wie 'ControllersController' innerhalb Ihrer app/controllers? Könnten Sie auch Ihren Devise-Initialisierer posten? – oreoluwa
Ich habe diese Information in dem Beitrag oben hinzugefügt! – Sunny