我正在尝试在我的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。所有都是最新版本,包括宝石。
如果我错过了所需的任何日志文件或信息,请告诉我。看起来像一个简单的问题,但
答案 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
如果代码不是急切加载的常量按需加载。不变 自动加载不是线程安全的,因此如果未启用预先加载 不应允许多线程