2017-04-04 56 views
0

我試圖部署在我的VPS我的Rails應用程序,但我得到了/var/log/httpd/error_log的錯誤說Rails的:阿帕奇:乘客:循環依賴錯誤,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)>'....` 

我已搜查谷歌和必應並且無處可去。我也不完全明白這個錯誤。創建一個基礎導軌應用程序,它的工作。推測說全系統都很好。設計寶石安裝在系統上並運行bundler install,沒有錯誤。還運行rake db:migrate將所有內容安裝到數據庫中。我懷疑係統上的一切正常,但在我的應用程序中的東西是錯誤的,或者我需要在設計中添加一些東西,但是什麼?

在我的應用程序中,它非常簡單。該應用程序允許人們註冊和登錄。我不使用郵件功能,它只有設計使用的標準user成員資格。沒有在設計中設置管理員角色。它的所有默認配置。

萬一我的Apache配置是

`<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>` 

的服務器設置上的Archlinux運行Apache /乘客。所有的都是最新的版本,包括寶石。

讓我知道是否我錯過了任何需要的日誌文件或信息。看似簡單的問題,但

回答

0

您可以嘗試添加該

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

紅寶石查找在$ LOAD_PATH列出的目錄中的文件。也就是說,Ruby遍歷所有的目錄,每個目錄檢查它們是否有一個名爲「erb.rb」或「erb.so」的文件。如果發現它們中的任何一個,則解釋器加載它並結束搜索。否則,它會再次嘗試列表中的下一個目錄。如果列表耗盡,則引發LoadError。

inject Rack::Lock if config.eager_load is false 

如果代碼不是急切加載的,常量會按需加載。常量 自動加載不是線程安全的,所以如果沒有啓用加載加載 不應該允許多線程

+0

對不起,但是我會添加這些行的文件或文件? – deskmonkey

+0

您可以將此第一行添加到'config/application.rb' –

+0

謝謝您的回覆。我將它添加到文件中,然後重新啓動應用程序'touch tmp/restart.txt'並重新啓動apache,但仍然沒有任何更改就出現錯誤。 – deskmonkey