2017-04-04 1 views
0

Je suis en train de déployer mes rails app sur mon VPS mais je reçois l'erreur dans /var/log/httpd/error_log direRails: Apache: Passager: erreur de dépendance circulaire, A DeviseController (RuntimeError)

`Circular dependency detected while autoloading constant DeviseController  (RuntimeError) 
/home/user/.gem/ruby/2.4.0/gems/activesupport-5.0.2/lib/active_support/dependencies.rb:509:in 'load_missing_constant' 
/home/user/.gem/ruby/2.4.0/gems/activesupport-5.0.2/lib/active_support/dependencies.rb:203:in 'const_missing' 
/home/user/.gem/ruby/2.4.0/gems/devise-4.2.1/app/controllers/devise/registrations_controller.rb:1:in '<top (required)>'....` 

J'ai cherché Google et Bing et aller nulle part. Je ne comprends pas entièrement cette erreur non plus. Créé une application de rails de base et cela a fonctionné. En estimant que tout est bon à l'échelle du système. La machine à gemme est installée sur le système et a généré bundler install et aucune erreur. Également exécuté rake db:migrate pour installer tout dans la base de données. Je soupçonne que tout va bien sur le système, mais quelque chose dans mon application est fausse ou je dois ajouter quelque chose dans le but, mais quoi ??

Dans mon application, c'est très simple. L'application permet aux personnes de s'inscrire et de se connecter. Je n'utilise pas la fonction de publipostage et il a seulement l'adhésion standard user qui conçoivent l'utilisation. Vous n'avez pas configuré le rôle d'administrateur dans le plan. C'est toutes les configurations par défaut.

Juste au cas où ma config Apache est

`<VirtualHost myapp.tk:80> 
    ServerName myapp.tk 
    ServerAlias www.myapp.tk 
    DocumentRoot "/srv/http/myapp/public" 
    ErrorLog "/var/log/httpd/myapp.tk-error_log" 
    CustomLog "/var/log/httpd/myapp.tk-access_log" common 
    PassengerRuby /usr/bin/ruby 
    RailsEnv production 
    <Directory "/srv/http/myapp/public"> 
     Allow from all 
     Options -MultiViews 
     Require all granted 
    </Directory> 
</VirtualHost>` 

La configuration du serveur est Apache/passager en cours d'exécution sur Archlinux. Toutes sont les dernières versions, y compris les gemmes. Faites-moi savoir si j'ai manqué des fichiers journaux ou des informations nécessaires. On aurait dit un problème simple mais

Répondre

0

Vous pouvez ajouter cette

config.autoload_paths += Dir["#{config.root}/lib/**/"] 

Ruby recherche le fichier dans les répertoires listés dans $ LOAD_PATH. C'est-à-dire que Ruby parcourt tous ses répertoires et vérifie pour chacun d'entre eux s'ils ont un fichier appelé "erb.rb" ou "erb.so". S'il en trouve, l'interprète le charge et met fin à la recherche. Sinon, il réessaye dans le répertoire suivant de la liste. Si la liste est épuisée, LoadError est déclenché.

inject Rack::Lock if config.eager_load is false 

Si le code n'est pas très chargé, les constantes chargées sont chargées à la demande. Constante L'autoloading n'est pas compatible avec les threads, donc si le chargement anticipé n'est pas activé multi-threading ne doit pas être autorisé

+0

Désolé, mais quel (s) fichier (s) ajouterais-je à ces lignes? – deskmonkey

+0

Vous pouvez ajouter cette première ligne à 'config/application.rb' –

+0

Merci d'avoir répondu. Je l'ai ajouté au fichier et j'ai redémarré l'application 'touch tmp/restart.txt' et j'ai redémarré apache mais je reçois toujours l'erreur sans aucun changement. – deskmonkey