代码之家  ›  专栏  ›  技术社区  ›  Hirurg103 Tilendor

无法自动加载常量AuthenticateFromToken,应输入./app/api/AuthenticateFromToken.rb以定义它

  •  1
  • Hirurg103 Tilendor  · 技术社区  · 6 年前

    当我开始编写我的第一个railsapi时,我把所有API代码都放在了下面 app/core/api

    config.autoload_paths += %W[
      #{config.root}/lib
      #{config.root}/app/core]
    

    之后,我决定将API类移到app文件夹中。现在,当我运行我的测试,我得到了这个错误

     Failure/Error: authenticate = API::AuthenticateFromToken.(params[:auth_token])
    
     LoadError:
       Unable to autoload constant AuthenticateFromToken, expected ./app/api/authenticate_from_token.rb to define it
    

    module API
      class AuthenticateFromToken
    
        prepend SimpleCommand
    
        def initialize(auth_token)
          @auth_token = auth_token
        end
    
        def call
          # authenticate code
        end
      end
    end
    

    api app/core app 我在自动加载方面没有任何问题。这个代码出了什么问题?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rodrigo    6 年前

    API 模块,它应该保存在 api 文件夹。

    问题是Rails会自动加载下的所有文件夹 app 默认情况下,您需要将其放入 app/api/api/authenticate_from_token.rb

    更多信息: https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#autoload-paths-and-eager-load-paths