mar*_*ins 5 ruby-on-rails grape-api
我需要一些帮助才能让Grape :: API启动并运行Rails 4.我得到一个Unable to autoload constant Base即使a puts告诉我该类已加载.我究竟做错了什么?
应用程序/ 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
Run Code Online (Sandbox Code Playgroud)
应用程序/ 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
Run Code Online (Sandbox Code Playgroud)
$ rspec spec/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)>'
Run Code Online (Sandbox Code Playgroud)
规格/ 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
Run Code Online (Sandbox Code Playgroud)
我正在使用的版本
$ 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
Run Code Online (Sandbox Code Playgroud)
小智 1
尝试继承Base自Grape::API而不是API:
module V1
class Base < Grape::API
...
Run Code Online (Sandbox Code Playgroud)
通过让它继承,您将创建一个循环依赖关系:解释器在知道 的定义之前API无法知道 的定义,但为此它首先需要知道 的定义,依此类推。V1::BaseAPIV1::Base
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |