ruby-on-rails - 为什么 Rails 不从应用程序/服务自动加载类?

标签 ruby-on-rails autoload ruby-on-rails-4.2

我正在开发 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/

相关文章:

actionmailer - 如何使用 preview_enabled=true 在 rails 4.2 上配置 Action 邮件程序

ruby-on-rails - 随机生成的密码 Rails 3.1

php - 如何使用 Composer 从供应商外部自动加载类?

php - 自动加载和命名空间

zend-framework - 更改某些前缀的 Zend 自动加载路径

ruby-on-rails - 升级到 Rails 4.2 问题

ruby-on-rails - 如何在不丢失旧密码的情况下正确地从 has_secure_password 迁移到 encrypted_pa​​ssword(因为两者都使用 password_digest)?

ruby-on-rails - 如何 assert_select 一个字符串里面有一个新行?

ruby-on-rails - 语法错误 : how to pass a parameter to a before_action?

ruby-on-rails - Rails 4 : PayPal IPN, 不同卖家的付款