gpt4 book ai didi

ruby-on-rails - Grape::API – 无法自动加载常量 Base,需要/app/api/v1/base.rb 来定义它(LoadError)

转载 作者:行者123 更新时间:2023-12-03 17:18:31 25 4
gpt4 key购买 nike

我需要一些帮助来启动 Grape::API 并在 Rails 4 上运行。
我得到一个 Unable to autoload constant Base即使 puts告诉我该类已加载。
我究竟做错了什么?

app/api/api.rb

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
module V1
class Base < API
puts "=== DEBUG - in Base"
version 'v1', using: :path, vendor: 'orwapp', cascade: false

mount Users

end
end

$ rspec 规范/api
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)>'

规范/api/users_spec.rb
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

我使用的版本
$ 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

最佳答案

试试 Base继承自 Grape::API而不是 API :

module V1
class Base < Grape::API
...

通过让它从 API 继承您正在创建循环依赖:解释器无法知道 V1::Base 的定义直到它知道 API 的定义,但为此它首先需要知道 V1::Base 的定义, 等等。

关于ruby-on-rails - Grape::API – 无法自动加载常量 Base,需要/app/api/v1/base.rb 来定义它(LoadError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com