Rails:Apache:Passenger:循环依赖性错误,DeviseController(RuntimeError)

时间:2017-04-04 17:38:56

标签: ruby-on-rails ruby apache devise passenger

我正在尝试在我的VPS上部署我的rails应用程序,但我在/var/log/httpd/error_log中收到错误

`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)>'....`

我搜索了Google和Bing并且无处可去。我也不完全理解这个错误。创建了一个基础轨道应用程序,它工作。认为一切都说系统范围很好。 devise gem安装在系统上并运行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 / Passenger。所有都是最新版本,包括宝石。

如果我错过了所需的任何日志文件或信息,请告诉我。看起来像一个简单的问题,但

1 个答案:

答案 0 :(得分:0)

您可以尝试添加此

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

Ruby在$ LOAD_PATH中列出的目录中查找该文件。也就是说,Ruby遍历其所有目录,并且每个目录检查它们是否有一个名为&#34; erb.rb&#34;或&#34; erb.so&#34;的文件。如果找到任何一个,解释器会加载它并结束搜索。否则,它会再次尝试列表的下一个目录。如果列表用尽,则引发LoadError。

inject Rack::Lock if config.eager_load is false

如果代码不是急切加载的常量按需加载。不变 自动加载不是线程安全的,因此如果未启用预先加载 不应允许多线程