J'ai suivi ce tutoriel ( http://railscasts.com/episodes/236-omniauth-part-2 ) pour la création d'une connexion à Facebook avec OmniAuth et Devise et j'ai l'erreur suivante: Une dépendance circulaire a été détectée lors du chargement automatique. Utilisateur constant dans mes routes.rb
devise_for :users , :controllers => {:registrations => 'registrations'}
registrations_controller.rb
Class RegistrationsController < Devise::RegistrationsController
def create
super
session[:omniauth] = nil unless @user.new_record?
end
private
def build_resource(*args)
super
if session["devise.omniauth"]
@user.apply_omniauth(session["devise.omniauth"])
session["devise.omniauth"] = nil
end
end
end
et voici ma méthode de création de AuthenticationsController
def create
omniauth = request.env["omniauth.auth"]
authentication = Authentication.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])
if authentication
flash[:notice] = "Signed in successfully."
sign_in_and_redirect(:user, authentication.user)
elsif current_user
current_user.authentications.create!(:provider => omniauth['provider'], :uid => omniauth['uid'])
flash[:notice] = "Authentication successful."
redirect_to authentications_url
else
user = User.new
user.apply_omniauth(omniauth)
if user.save
flash[:notice] = "Signed in successfully."
sign_in_and_redirect(:user, user)
else
session[:omniauth] = omniauth.except('extra')
redirect_to new_user_registration_url
end
end
end
Où votre registrations_controller.rb
a-t-il été enregistré? L'emplacement est important. J'ai trouvé que je faisais une erreur en l'enregistrant en app/controllers/devise/.
. Il fallait simplement qu'il soit enregistré dans app/controllers/.
exemple:
app/controllers/registrations_controller.rb
De plus, config/routes.rb
route devrait être défini comme suit:
devise_for :users, controllers: { registrations: 'registrations' }
Eh bien, je suis soulagé après avoir ajouté la ligne suivante dans mon développement.rb
config.middleware.delete Rack::Lock
Référence: https://github.com/websocket-Rails/websocket-Rails/issues/101
Vous pouvez essayer cette fois enfin.
J'avais un problème similaire.
Et puis j'ai réalisé que le même fichier était dupliqué dans différents dossiers du contrôleur, ce qui était à l'origine du problème.
J'ai eu les deux fichiers avec le même contenu:
app/controllers/logs_controller.rb
app/controllers/api/logs_controller.rb
J'ai le même problème avec certaines classes de lib (utilisé config.autoload_paths += Dir["#{config.root}/lib/**/"]
)
pour moi a aidé à faire passer Rails de 4.0.0.rc1
à 4.0.0
beaucoup de gemmes ont commencé à casser sur Rails 4, en raison du problème de déchargement dans les contrôleurs. https://github.com/flyerhzm/switch_user/issues/34https://github.com/thoughtbot/high_voltage/issues/68https://github.com/thoughtbot/clearance/issues/276 et bien d'autres
vous devriez rechercher dans les erreurs le type de gem qui crée le problème. Une fois que vous savez que: 1) Vérifiez les problèmes non résolus de cette gemme. 2) Si le problème est résolu et corrigé , assurez-vous que vous avez ce correctif ou bien mettez à jour la gemme. 3) Sinon, vous pouvez créer un problème et leur demander de le résoudre. 4) Si vous ne voulez pas attendre leur réparation , vous pouvez former la gemme et proposer un correctif https://github.com/cashins/email_preview/commit/b34a077a954b98bd08615ffae8979ad142667555 tous les correctifs sont identiques (suppression de la suppression). le contrôleur spécifié)
J'espère que ça aide.
si rien ne vous aide à déclasser votre version de Rails.
J'ai trouvé cela fonctionne dans development.rb:
config.reload_classes_only_on_change = false
(J'ai déjà essayé de supprimer Gemfile.lock et d'exécuter la mise à jour de paquet, ainsi que de changer de version de Rails, comme mentionné ici et ailleurs. Ils ne m'ont pas fonctionné.)
J'ai créé la même erreur avec une faute de frappe, j'avais
module EmployeeReminderssHelper
quand le fichier d'assistance a été appelé
employee_reminders_helper.rb
(Notez les extra 's')