我正在开发 Rails 4.2 应用程序,并且刚刚将 app/services/fetch_artists.rb
添加到结构中。在这个文件中,我定义了一个 class FetchArtists;结束
。
当尝试运行rails r 'FetchArtists'
时,它给我一个NameError:未初始化的常量FetchArtists
。
我尝试查看ActiveSupport::Dependency.autoload_paths
,实际上,app/services
不存在:
/.../app/assets
/.../app/controllers
/.../app/helpers
/.../app/jobs
/.../app/mailers
/.../app/models
/.../app/controllers/concerns
/.../app/models/concerns
/.../spec/mailers/previews
我的问题是,为什么这个文件夹没有自动加载,我应该做什么?
编辑
很奇怪,用rails runner
重复运行上述命令后,新文件夹出现在自动加载路径上。我不知道为什么会出现如此滞后的情况。
有人建议这可能与spring
有关。我想了解更多相关信息,因为它也可能对许多其他处于这种情况的人有所帮助。
最佳答案
我遇到了同样的问题,这似乎是 Spring 的缓存问题,Spring 是一个处理预加载应用程序的进程。它用于 Web 服务器以及控制台和 Rake 任务。
使用 bin/spring stop
停止 Spring 将强制 Spring 重新加载您的应用程序。现在运行 rails console
并检查 ActiveSupport::Dependency.autoload_paths
将成功显示 app/services
。
关于ruby-on-rails - 为什么 Rails 不从应用程序/服务自动加载类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32873343/