[英]Versioning API Helpers in Ruby on Rails
我们有一个版本化的 API 遵循 Rails API 版本化的所有约定。 IE
module API::V4
class Test < ApiController
end
end
但是有没有合适的方法来版本助手? 当前的 helpers 目录看起来像这样:
app
|__helpers
|__helper_a.rb
|__helper_b.rb
并且所有助手都是已定义的模块。
有没有办法做到这一点?
module Helpers::V2
class HelperA
end
end
我尝试创建一个目录app/helpers/v2/helper_a.rb
,添加app/helpers/helpers.rb
并定义module Helpers
但由于某种原因,rails 总是看不到Helpers::V2::HelperA
Rails 从子目录开始搜索app
的每个子目录。 app/models/foo/bar.rb
包含Foo::Bar
而不是Models::Foo::Bar
。 app/controllers/api/v4/test.rb
包含Api::V4::Test
,而不是Controllers::Api::V4::Test
。
所以app/helpers/v2/helper_a.rb
包含V2::HelperA
。
module V2
module HelperA
end
end
如果您想将帮助程序版本与您的 API 版本相关联,则镜像目录结构是有意义的。
# app/helpers/api/v2/helper_a.rb
# A helper for API v2.
module Api
module V2
module HelperA
end
end
end
请注意,它是Api
以遵循 Rails 约定。 自动加载器将 map app/helpers/api/v2/helper_a.rb
到Api::V2::HelperA
。 它可能适用于 Rails 5 自动加载器,但不适用于 Rails 6 自动加载器。
如果我们使用API::V2::HelperA
...
[1] pry(main)> API::V2::HelperA
NameError: uninitialized constant API
Did you mean? Api
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.