首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未初始化的常量守门员::Doorkeeper任务中的AccessToken

未初始化的常量守门员::Doorkeeper任务中的AccessToken
EN

Stack Overflow用户
提问于 2019-03-04 08:13:22
回答 1查看 522关注 0票数 0

我已经在rails项目(Grape)中使用Doorkeeper实现了OAuth 2。我想通过rake任务删除过期和撤销的access_token。到目前为止,我一直在跟踪官方的看门人文档,无意中发现了耙式任务。根据它,我在我的Rakefile中添加了Doorkeeper::Rake.load_tasks。之后,当我在控制台中运行rake doorkeeper:db:cleanup时,会得到以下错误。

代码语言:javascript
复制
rake aborted!
NameError: uninitialized constant Doorkeeper::AccessToken
/.rvm/gems/ruby-2.6.0p0/ruby/2.6.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:74:in `block in load_missing_constant'
/.rvm/gems/ruby-2.6.0p0/ruby/2.6.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:8:in `without_bootsnap_cache'
/.rvm/gems/ruby-2.6.0p0/ruby/2.6.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:74:in `rescue in load_missing_constant'
/.rvm/gems/ruby-2.6.0p0/ruby/2.6.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:56:in `load_missing_constant'
/.rvm/gems/ruby-2.6.0p0/ruby/2.6.0/gems/doorkeeper-5.0.2/lib/doorkeeper/rake/db.rake:16:in `block (4 levels) in <main>'

我的Rakefile.rb

代码语言:javascript
复制
require_relative 'config/application'
Doorkeeper::Rake.load_tasks
Rails.application.load_tasks

我也读过清理AccessGrant和AccessToken添加rake任务以清除陈旧的数据库记录,但这些都解决不了我的问题。我怎么才能解决这个问题?

/.rvm/gems/ruby-2.6.0p0/ruby/2.6.0/gems/doorkeeper-5.0.2/lib/doorkeeper.rb 更新文件

代码语言:javascript
复制
require 'doorkeeper/version'
require 'doorkeeper/engine'
require 'doorkeeper/config'

require 'doorkeeper/request/strategy'
require 'doorkeeper/request/authorization_code'
require 'doorkeeper/request/client_credentials'
require 'doorkeeper/request/code'
require 'doorkeeper/request/password'
require 'doorkeeper/request/refresh_token'
require 'doorkeeper/request/token'

require 'doorkeeper/errors'
require 'doorkeeper/server'
require 'doorkeeper/request'
require 'doorkeeper/validations'

require 'doorkeeper/oauth/authorization/code'
require 'doorkeeper/oauth/authorization/context'
require 'doorkeeper/oauth/authorization/token'
require 'doorkeeper/oauth/authorization/uri_builder'
require 'doorkeeper/oauth/helpers/scope_checker'
require 'doorkeeper/oauth/helpers/uri_checker'
require 'doorkeeper/oauth/helpers/unique_token'

require 'doorkeeper/oauth'
require 'doorkeeper/oauth/scopes'
require 'doorkeeper/oauth/error'
require 'doorkeeper/oauth/base_response'
require 'doorkeeper/oauth/code_response'
require 'doorkeeper/oauth/token_response'
require 'doorkeeper/oauth/error_response'
require 'doorkeeper/oauth/pre_authorization'
require 'doorkeeper/oauth/base_request'
require 'doorkeeper/oauth/authorization_code_request'
require 'doorkeeper/oauth/refresh_token_request'
require 'doorkeeper/oauth/password_access_token_request'

require 'doorkeeper/oauth/client_credentials/validation'
require 'doorkeeper/oauth/client_credentials/creator'
require 'doorkeeper/oauth/client_credentials/issuer'
require 'doorkeeper/oauth/client_credentials/validation'
require 'doorkeeper/oauth/client/credentials'

require 'doorkeeper/oauth/client_credentials_request'
require 'doorkeeper/oauth/code_request'
require 'doorkeeper/oauth/token_request'
require 'doorkeeper/oauth/client'
require 'doorkeeper/oauth/token'
require 'doorkeeper/oauth/token_introspection'
require 'doorkeeper/oauth/invalid_token_response'
require 'doorkeeper/oauth/forbidden_token_response'

require 'doorkeeper/models/concerns/orderable'
require 'doorkeeper/models/concerns/scopes'
require 'doorkeeper/models/concerns/expirable'
require 'doorkeeper/models/concerns/revocable'
require 'doorkeeper/models/concerns/accessible'

require 'doorkeeper/models/access_grant_mixin'
require 'doorkeeper/models/access_token_mixin'
require 'doorkeeper/models/application_mixin'

require 'doorkeeper/helpers/controller'

require 'doorkeeper/rails/routes'
require 'doorkeeper/rails/helpers'

require 'doorkeeper/rake'
require 'doorkeeper/stale_records_cleaner'

require 'doorkeeper/orm/active_record'

module Doorkeeper
  def self.authenticate(request, methods = Doorkeeper.configuration.access_token_methods)
    OAuth::Token.authenticate(request, *methods)
  end
end
EN

回答 1

Stack Overflow用户

发布于 2019-03-25 20:30:48

您是否尝试过先为rake任务加载应用程序env?

门卫模型使用延迟加载ActiveSupport钩子(on_load(:active_record),所以如果不加载应用程序env或AR,它可以跳过模型初始化,这就是为什么Rake任务错过了所需的类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54979076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档