首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >葡萄::api-无法自动加载常量基础,期望/app/api/v1/base.rb来定义它(LoadError)

葡萄::api-无法自动加载常量基础,期望/app/api/v1/base.rb来定义它(LoadError)
EN

Stack Overflow用户
提问于 2014-09-10 11:29:10
回答 2查看 2.3K关注 0票数 5

我需要一些帮助来获得Grape::API并使用Rails 4运行。我得到了一个Unable to autoload constant Base,尽管puts告诉我已经加载了该类。我做错了什么?

app/api/api.rb

代码语言:javascript
复制
class API < Grape::API
  prefix 'api'
  format :json
  default_format :json
  mount V1::Base   # Everything loads perfectly until I add this line.
end

app/api/v1/base.rb

代码语言:javascript
复制
module V1
  class Base < API
    puts "=== DEBUG - in Base"
    version 'v1', using: :path, vendor: 'orwapp', cascade: false

    mount Users

  end
end

$ rspec spec/api

代码语言:javascript
复制
12:58:29 - INFO - Run all
12:58:29 - INFO - Running all specs
=== DEBUG - in Base
/dependencies.rb:481:in `load_missing_constant': 
Unable to autoload constant Base,
 expected /Users/martins/Work/myapp/app/api/v1/base.rb to define it (LoadError)
        from /Users/martins/Work/myapp/app/api/api.rb:9:in `<class:API>'
        from /Users/martins/Work/myapp/app/api/api.rb:3:in `<top (required)>'

spec/api/users_spec.rb

代码语言:javascript
复制
describe 'GET /api/v1/users/:id', focus: true do
  let(:user) { Fabricate :user }

  it 'returns that specific user' do
    get "/api/v1/users/#{ user.id }", {}, https_and_authorization
    response.status.should eq 200
    parse_response_for(:user)['email'].should eq user.email
  end
end

我正在使用的版本

代码语言:javascript
复制
$ ack grape Gemfile.lock
      remote: git://github.com/intridea/grape.git
        grape (0.9.1)
        grape-entity (0.4.4)
        grape-swagger (0.8.0)
          grape
          grape-entity
EN

回答 2

Stack Overflow用户

发布于 2014-09-10 13:18:48

尝试让BaseGrape::API继承而不是API

代码语言:javascript
复制
module V1
  class Base < Grape::API
  ...

通过让它继承API,您将创建一个循环依赖关系:在解释器知道API的定义之前,它无法知道V1::Base的定义,但为此,它首先需要知道V1::Base的定义,等等。

票数 1
EN

Stack Overflow用户

发布于 2014-09-11 08:22:54

改为mount ::V1::Base修复了它。

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

https://stackoverflow.com/questions/25764244

复制
相关文章

相似问题

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