2

I am using JSONAPI-Resourcs an API project. When I try and namespace it I hit an error where the server won't start. Digging in deeper when I run bin/rails zeitwerk:check I get the following error:

NameError: JSONAPI: Could not find resource 'api/v1/connectors'. (Class Api::V1::ConnectorResource not found)
/Users/David/Code/Ruby/my_project/config/routes.rb:7:in `block (3 levels) in <main>'
/Users/David/Code/Ruby/my_project/config/routes.rb:6:in `block (2 levels) in <main>'
/Users/David/Code/Ruby/my_project/config/routes.rb:5:in `block in <main>'
/Users/David/Code/Ruby/my_project/config/routes.rb:3:in `<main>'
/Users/David/Code/Ruby/my_project/config/environment.rb:5:in `<main>'
/Users/David/Code/Ruby/my_project/bin/rails:5:in `<top (required)>'
/Users/David/Code/Ruby/my_project/bin/spring:10:in `block in <top (required)>'
/Users/David/Code/Ruby/my_project/bin/spring:7:in `<top (required)>'
Tasks: TOP => zeitwerk:check => environment
(See full trace by running task with --trace)

Simply from trying to add a namespaced resource as per the guide. If I remove the namespacing it works like a charm.

connectors_controller.rb

module Api
  module V1
    class ConnectorsController < ApplicationController
    end
  end
end

connector_resource.rb

module Api
  module V1
    class ConnectorResource < JSONAPI::Resource
      attributes :name, :description, :save_path, :created_at, :updated_at
    end
  end
end

routes.rb

Rails.application.routes.draw do
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  namespace :api do
    namespace :v1 do
      jsonapi_resources :connectors, only: %i[index show]
    end
  end
end
noobmaster69
  • 2,985
  • 3
  • 27
  • 44
  • Try running `spring stop`. Zeitwerk doesn't get "stuck" as often as the classic autoloader but it happens. – max Sep 21 '21 at 22:15
  • On a side not I would recommend that you setup an inflection and use `API` instead of `Api` since acronyms should be all caps per the Ruby conventions (See HTTP, CSV, JSON etc.) – max Sep 21 '21 at 22:21

1 Answers1

2

I think you are misplacing the resources, The actual path for resources should be under

resouces/api/V1/some_recource.rb