Rails Rails 5 中 Grape 如何实现在 development 环境重新加载 API 更改?

pingbro · 2017年08月02日 · 最后由 pingbro 回复于 2017年08月02日 · 1656 次阅读

grape 文档中给的实现方法是

ActionDispatch::Callbacks.to_prepare do
    api_reloader.execute_if_updated
end

但是在 rails5 ActionDispatch::Callbacks 没有 to_prepare 方法,rails api 中也没有找到替代方法

greap 是啥?

Rei 回复

手误 😳

建议不要在 Rails 上叠加 grape,不然处理各种兼容问题烦得要死。要不用 Rails 要不用 Grape。

因为你的 API 文件命名和文件组织结构不符合 Rails Autoload 的约定,所以无法热加载。

https://ruby-china.org/topics/15623#reply-300797

搜索历史,有很多资料了

huacnlee 回复

文件组织结构这是另一个问题,我用 rails4.2 的时候就会出现这个问题。但是用 rails5 的时候启动服务直接就报错了

config/initializers/reload_api.rb:9:in `<top (required)>': undefined method `to_prepare' for ActionDispatch::Callbacks:Class (NoMethodError)

我到 rails5 源码里面看了一下,ActionDispatch::Callbacks 确实没有 to_prepare 这个方法,但是 rails4.2 是有这个方法的。rails5 里面暂时还没找到相应的替代方法,是不是 rails5 有更好的实现方法,然后把 to_prepare 废弃了?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号