2017-04-04 51 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