为什么尝试将葡萄与Rails结合使用时会出现“未初始化的常量API”失败的情况?

知识体

我希望有人解释为什么在Grape(0.10.1)的Rails(4.1.8)中会发生这种情况

所以这是我的API:

app/api/root.rb

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

app/api/v1/root.rb

module API::V1
  class Root < Grape::API
    version 'v1'
    mount API::V1::Users
  end
end

app/api/v1/users.rb

module API::V1
  class Users < Grape::API
    format 'json'

    resource :users do
      desc "Return list of users"
      get '/' do
        User.all
      end
    end
  end
end

config/routes.rb

Rails.application.routes.draw do
  mount API::Root => '/'
end

在我中,application.rb我补充说:

config.paths.add "app/api", glob: "**/*.rb"
config.autoload_paths += Dir["#{Rails.root}/app/api/*"]

在这种情况下,我得到了错误: NameError: uninitialized constant API


但是如果我的代码看起来像:

app/api/root.rb 同上

然后app/api/v1/root.rb

class Root < Grape::API
  version 'v1'
  mount Users
end

app/api/v1/users.rb

class Users < Grape::API
  format 'json'

  resource :users do
    desc "Return list of users"
    get '/' do
      User.all
    end
  end
end

config/routes.rb

Rails.application.routes.draw do
  mount Root => '/'
end

config/application.rb上面一样

然后,一切正常。

我的问题是,为什么我不需要在内部v1/root.rb和内部都指定模块v1/users,为什么也不需要API::Root => '/'在in中使用config/routes.rb

用户473305

这是因为它app/api是API类的顶级文件夹,而不是app

根据Grape的文档

将API文件放入app/apiRails需要一个与Ruby模块名称匹配的子目录,以及一个与类名称匹配的文件名。在我们的示例中,的文件名位置和目录Twitter::API应为app/api/twitter/api.rb

因此,一个API::Root的正确位置实际上app/api/api/root.rb不是,/app/api/root.rb尽管这顶级命名空间中该类的正确位置,这就是您给出的第二个示例(从API模块中删除了类)起作用的原因。

不过,我建议您将API类放在各自的模块中,然后将其移动到下方的匹配子文件夹中app/api

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果Rails的子文件夹中的类出现类,为什么会出现未初始化的常量错误?

来自分类Dev

为什么会出现“未初始化的常量ApplicationController :: SessionHelper”错误?

来自分类Dev

即使我正确初始化,为什么会出现“ cuMemAlloc失败:未初始化”的信息?

来自分类Dev

即使我正确初始化,为什么会出现“ cuMemAlloc失败:未初始化”的信息?

来自分类Dev

将Firebase与JavaScript结合使用时出现“初始化前无法访问'firebase'”错误

来自分类Dev

尝试使i = i * i时,为什么出现错误“使用未初始化的内存'i'”和“使用了未初始化的局部变量'i'”的错误

来自分类Dev

与KnockoutJS结合使用时,为什么jQuery File Upload需要重新初始化?

来自分类Dev

为什么收到错误“未初始化的常量SecureRandom?

来自分类Dev

为什么未初始化的constexpr变量不是常量?

来自分类Dev

为什么使用'operator ++'进行引用初始化会出现错误

来自分类Dev

为什么在尝试返回const引用时会出现矢量副本?

来自分类Dev

在rails中使用gem时未初始化的常量

来自分类Dev

为什么使用 NameError 创建新资源错误(未初始化的常量 Thing::user)?

来自分类Dev

NameError:未初始化的常量(rails)

来自分类Dev

Rails关联的未初始化常量

来自分类Dev

为什么会出现“无法访问的代码”和“变量未初始化”的编译错误?

来自分类Dev

尝试实例化新类时出现未初始化的常量错误

来自分类Dev

为什么有时会出现“工作表类的粘贴方法失败”的情况?

来自分类Dev

未初始化的常量Api :: Doorkeeper

来自分类Dev

尝试在Rails路由中使用名称空间时获取ActionController :: RoutingError未初始化的常量

来自分类Dev

尝试创建客户端时出现“未初始化的常量”错误

来自分类Dev

厨师:mongodb :: user_management失败,出现“ NameError:未初始化的常量Mongo :: MongoClient”

来自分类Dev

当我在WHERE子句上使用属性时,为什么会出现转换失败错误,但在不使用时会起作用?

来自分类Dev

为什么在使用指针(C ++)时出现未初始化的堆内存错误?

来自分类Dev

在初始化后的事件定义中,为什么会出现错误18使用未分配的局部变量'beforeEvntDrawArg'

来自分类Dev

在初始化后的事件定义中,为什么会出现错误18使用未分配的局部变量'beforeEvntDrawArg'

来自分类Dev

尝试在Rails中调用我的服务时获取“未初始化的常量”

来自分类Dev

为什么在尝试将所有图像从硬盘获取到列表时会出现异常?

来自分类Dev

升级到Rails 4.2.3时,出现“ NameError:未初始化的常量ActionController :: Responder”

Related 相关文章

  1. 1

    如果Rails的子文件夹中的类出现类,为什么会出现未初始化的常量错误?

  2. 2

    为什么会出现“未初始化的常量ApplicationController :: SessionHelper”错误?

  3. 3

    即使我正确初始化,为什么会出现“ cuMemAlloc失败:未初始化”的信息?

  4. 4

    即使我正确初始化,为什么会出现“ cuMemAlloc失败:未初始化”的信息?

  5. 5

    将Firebase与JavaScript结合使用时出现“初始化前无法访问'firebase'”错误

  6. 6

    尝试使i = i * i时,为什么出现错误“使用未初始化的内存'i'”和“使用了未初始化的局部变量'i'”的错误

  7. 7

    与KnockoutJS结合使用时,为什么jQuery File Upload需要重新初始化?

  8. 8

    为什么收到错误“未初始化的常量SecureRandom?

  9. 9

    为什么未初始化的constexpr变量不是常量?

  10. 10

    为什么使用'operator ++'进行引用初始化会出现错误

  11. 11

    为什么在尝试返回const引用时会出现矢量副本?

  12. 12

    在rails中使用gem时未初始化的常量

  13. 13

    为什么使用 NameError 创建新资源错误(未初始化的常量 Thing::user)?

  14. 14

    NameError:未初始化的常量(rails)

  15. 15

    Rails关联的未初始化常量

  16. 16

    为什么会出现“无法访问的代码”和“变量未初始化”的编译错误?

  17. 17

    尝试实例化新类时出现未初始化的常量错误

  18. 18

    为什么有时会出现“工作表类的粘贴方法失败”的情况?

  19. 19

    未初始化的常量Api :: Doorkeeper

  20. 20

    尝试在Rails路由中使用名称空间时获取ActionController :: RoutingError未初始化的常量

  21. 21

    尝试创建客户端时出现“未初始化的常量”错误

  22. 22

    厨师:mongodb :: user_management失败,出现“ NameError:未初始化的常量Mongo :: MongoClient”

  23. 23

    当我在WHERE子句上使用属性时,为什么会出现转换失败错误,但在不使用时会起作用?

  24. 24

    为什么在使用指针(C ++)时出现未初始化的堆内存错误?

  25. 25

    在初始化后的事件定义中,为什么会出现错误18使用未分配的局部变量'beforeEvntDrawArg'

  26. 26

    在初始化后的事件定义中,为什么会出现错误18使用未分配的局部变量'beforeEvntDrawArg'

  27. 27

    尝试在Rails中调用我的服务时获取“未初始化的常量”

  28. 28

    为什么在尝试将所有图像从硬盘获取到列表时会出现异常?

  29. 29

    升级到Rails 4.2.3时,出现“ NameError:未初始化的常量ActionController :: Responder”

热门标签

归档