Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 葡萄原料药&x2B;葡萄招摇过市版本控制问题_Ruby On Rails_Swagger_Grape - Fatal编程技术网

Ruby on rails 葡萄原料药&x2B;葡萄招摇过市版本控制问题

Ruby on rails 葡萄原料药&x2B;葡萄招摇过市版本控制问题,ruby-on-rails,swagger,grape,Ruby On Rails,Swagger,Grape,尝试采用一个未版本的Grape+Rails API并将其分解为v1和v2,并且遵循了一些在线发布的不同模式。但我不能让它正常工作。当我得到招摇过市的文档时,我一直得到这个无用的错误: 无法从中读取swagger JSON 我不确定这是从哪里来的,无论是从我的grapeapi结构、路由,还是一些招摇过市的东西。我做错了什么 宝石包括: gem 'grape' gem 'grape-entity' gem 'grape-swagger' gem 'grape-swagger-ui' 文件结构: a

尝试采用一个未版本的Grape+Rails API并将其分解为v1和v2,并且遵循了一些在线发布的不同模式。但我不能让它正常工作。当我得到招摇过市的文档时,我一直得到这个无用的错误:

无法从中读取swagger JSON

我不确定这是从哪里来的,无论是从我的grapeapi结构、路由,还是一些招摇过市的东西。我做错了什么

宝石包括:

gem 'grape'
gem 'grape-entity'
gem 'grape-swagger'
gem 'grape-swagger-ui'
文件结构:

app/
  api/
    v1/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    v2/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    api.rb
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    prefix 'api'
    mount API::V1::Root 
    mount API::V2::Root

    add_swagger_documentation
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'v1'
        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents
      end
    end
end
Rails.application.routes.draw do
    mount API::Root => '/'

    namespace :api do
      namespace :v1 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

    namespace :api do
      namespace :v2 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

end
module API
    module V1       
        class ScheduleCycles < Grape::API
            # configure whether it's developers only here
          helpers ApiHelpers::AuthenticationHelper
          # before { restrict_access_to_developers }
          before { authenticate! }

          format :json

            # ScheduleCycle endpoints here
          desc 'End-points for ScheduleCycles'
          namespace :schedule_cycles do
            desc 'Retrieve schedule_cycles'
            params do
              requires :token, type: String, desc: 'user token'
            end
            get do
                schedule_cycles = ScheduleCycle.all
                present schedule_cycles, with: Entities::ScheduleCycleEntity
            end

..

  end
end
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    mount API::V1::Root 
    mount API::V2::Root
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'api/v1'

        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents

        add_swagger_documentation api_version: 'v1'
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        prefix 'api/v2'

        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents

        add_swagger_documentation api_version: 'v2'
      end
    end
end
app/api/api.rb:

app/
  api/
    v1/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    v2/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    api.rb
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    prefix 'api'
    mount API::V1::Root 
    mount API::V2::Root

    add_swagger_documentation
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'v1'
        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents
      end
    end
end
Rails.application.routes.draw do
    mount API::Root => '/'

    namespace :api do
      namespace :v1 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

    namespace :api do
      namespace :v2 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

end
module API
    module V1       
        class ScheduleCycles < Grape::API
            # configure whether it's developers only here
          helpers ApiHelpers::AuthenticationHelper
          # before { restrict_access_to_developers }
          before { authenticate! }

          format :json

            # ScheduleCycle endpoints here
          desc 'End-points for ScheduleCycles'
          namespace :schedule_cycles do
            desc 'Retrieve schedule_cycles'
            params do
              requires :token, type: String, desc: 'user token'
            end
            get do
                schedule_cycles = ScheduleCycle.all
                present schedule_cycles, with: Entities::ScheduleCycleEntity
            end

..

  end
end
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    mount API::V1::Root 
    mount API::V2::Root
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'api/v1'

        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents

        add_swagger_documentation api_version: 'v1'
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        prefix 'api/v2'

        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents

        add_swagger_documentation api_version: 'v2'
      end
    end
end
然后,我实际的GrapeAPI类遵循如下格式,来自app/API/v1/schedule\u cycles.rb:

app/
  api/
    v1/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    v2/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    api.rb
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    prefix 'api'
    mount API::V1::Root 
    mount API::V2::Root

    add_swagger_documentation
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'v1'
        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents
      end
    end
end
Rails.application.routes.draw do
    mount API::Root => '/'

    namespace :api do
      namespace :v1 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

    namespace :api do
      namespace :v2 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

end
module API
    module V1       
        class ScheduleCycles < Grape::API
            # configure whether it's developers only here
          helpers ApiHelpers::AuthenticationHelper
          # before { restrict_access_to_developers }
          before { authenticate! }

          format :json

            # ScheduleCycle endpoints here
          desc 'End-points for ScheduleCycles'
          namespace :schedule_cycles do
            desc 'Retrieve schedule_cycles'
            params do
              requires :token, type: String, desc: 'user token'
            end
            get do
                schedule_cycles = ScheduleCycle.all
                present schedule_cycles, with: Entities::ScheduleCycleEntity
            end

..

  end
end
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    mount API::V1::Root 
    mount API::V2::Root
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'api/v1'

        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents

        add_swagger_documentation api_version: 'v1'
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        prefix 'api/v2'

        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents

        add_swagger_documentation api_version: 'v2'
      end
    end
end
模块API
模块V1
类ScheduleCycles
我发现了这一点,并发布了对我有用的东西,以防其他人发现它有用。这真的只是一个夸夸其谈的问题。首先,我需要将
add_swagger_documentation
移动到实际版本
Root
类中,而不是在父API
Root
类中,其次,我需要为swagger添加
API_version
参数。我还将
prefix
参数移到了这些版本类中。结果是:

app/api/api.rb:

app/
  api/
    v1/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    v2/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    api.rb
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    prefix 'api'
    mount API::V1::Root 
    mount API::V2::Root

    add_swagger_documentation
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'v1'
        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents
      end
    end
end
Rails.application.routes.draw do
    mount API::Root => '/'

    namespace :api do
      namespace :v1 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

    namespace :api do
      namespace :v2 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

end
module API
    module V1       
        class ScheduleCycles < Grape::API
            # configure whether it's developers only here
          helpers ApiHelpers::AuthenticationHelper
          # before { restrict_access_to_developers }
          before { authenticate! }

          format :json

            # ScheduleCycle endpoints here
          desc 'End-points for ScheduleCycles'
          namespace :schedule_cycles do
            desc 'Retrieve schedule_cycles'
            params do
              requires :token, type: String, desc: 'user token'
            end
            get do
                schedule_cycles = ScheduleCycle.all
                present schedule_cycles, with: Entities::ScheduleCycleEntity
            end

..

  end
end
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    mount API::V1::Root 
    mount API::V2::Root
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'api/v1'

        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents

        add_swagger_documentation api_version: 'v1'
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        prefix 'api/v2'

        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents

        add_swagger_documentation api_version: 'v2'
      end
    end
end
Dir[File.dirname(+'/v1/*.rb']。每个do都有一个文件
需要文件
结束
Dir[File.dirname(uuu File_uuu)+'/v2/*.rb'])。每个do | File |
需要文件
结束
模块API
类根
app/api/v1/api.rb:

app/
  api/
    v1/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    v2/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    api.rb
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    prefix 'api'
    mount API::V1::Root 
    mount API::V2::Root

    add_swagger_documentation
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'v1'
        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents
      end
    end
end
Rails.application.routes.draw do
    mount API::Root => '/'

    namespace :api do
      namespace :v1 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

    namespace :api do
      namespace :v2 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

end
module API
    module V1       
        class ScheduleCycles < Grape::API
            # configure whether it's developers only here
          helpers ApiHelpers::AuthenticationHelper
          # before { restrict_access_to_developers }
          before { authenticate! }

          format :json

            # ScheduleCycle endpoints here
          desc 'End-points for ScheduleCycles'
          namespace :schedule_cycles do
            desc 'Retrieve schedule_cycles'
            params do
              requires :token, type: String, desc: 'user token'
            end
            get do
                schedule_cycles = ScheduleCycle.all
                present schedule_cycles, with: Entities::ScheduleCycleEntity
            end

..

  end
end
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    mount API::V1::Root 
    mount API::V2::Root
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'api/v1'

        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents

        add_swagger_documentation api_version: 'v1'
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        prefix 'api/v2'

        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents

        add_swagger_documentation api_version: 'v2'
      end
    end
end
Dir[File.dirname(+'/*.rb']。每个do | File |
需要文件
结束
模块API
模块V1
类根
app/api/v2/api.rb:

app/
  api/
    v1/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    v2/
      api.rb
      calendars.rb
      schedule_cycles.rb
      scheduled_events.rb
    api.rb
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    prefix 'api'
    mount API::V1::Root 
    mount API::V2::Root

    add_swagger_documentation
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'v1'
        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents
      end
    end
end
Rails.application.routes.draw do
    mount API::Root => '/'

    namespace :api do
      namespace :v1 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

    namespace :api do
      namespace :v2 do

            resources :calendars do
                resources :schedule_cycles
                resources :scheduled_events
            end

        end
    end

end
module API
    module V1       
        class ScheduleCycles < Grape::API
            # configure whether it's developers only here
          helpers ApiHelpers::AuthenticationHelper
          # before { restrict_access_to_developers }
          before { authenticate! }

          format :json

            # ScheduleCycle endpoints here
          desc 'End-points for ScheduleCycles'
          namespace :schedule_cycles do
            desc 'Retrieve schedule_cycles'
            params do
              requires :token, type: String, desc: 'user token'
            end
            get do
                schedule_cycles = ScheduleCycle.all
                present schedule_cycles, with: Entities::ScheduleCycleEntity
            end

..

  end
end
Dir[File.dirname(__FILE__) + '/v1/*.rb'].each do |file| 
  require file
end

Dir[File.dirname(__FILE__) + '/v2/*.rb'].each do |file| 
  require file
end

module API
  class Root < Grape::API
    mount API::V1::Root 
    mount API::V2::Root
  end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V1
      class Root < Grape::API
        prefix 'api/v1'

        mount API::V1::Calendars
        mount API::V1::ScheduleCycles
        mount API::V1::ScheduledEvents

        add_swagger_documentation api_version: 'v1'
      end
    end
end
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file| 
  require file
end

module API
    module V2
      class Root < Grape::API
        prefix 'api/v2'

        mount API::V2::Calendars
        mount API::V2::ScheduleCycles
        mount API::V2::ScheduledEvents

        add_swagger_documentation api_version: 'v2'
      end
    end
end
Dir[File.dirname(+'/*.rb']。每个do | File |
需要文件
结束
模块API
模块V2
类根