【问题标题】:Grape API files in Rails not reloadingRails 中的 Grape API 文件未重新加载
【发布时间】:2014-06-27 16:55:00
【问题描述】:

在开发模式下,我们的 Rails 应用程序中的 Grape API 文件没有按应有的方式重新加载。我们已经在 Grape README 中尝试了建议的方法,并提到了似乎是关键的 SO 帖子 (Ruby on Rails 3 - Reload lib directory for each request),但由于某种原因它不起作用。

在 config/application.rb 中:

config.paths.add File.join("app", "api"), glob: File.join("**", "*.rb")
config.autoload_paths += Dir[Rails.root.join("app", "api", "*")]

在初始化程序/reload_api.rb 中:

if Rails.env == "development"
  api_reloader = ActiveSupport::FileUpdateChecker.new(Dir[Rails.root.join('app', 'api', '**', '*.rb')]) do
    puts ">>>> RELOADING!"
    Rails.application.reload_routes!
  end

  ActionDispatch::Callbacks.to_prepare do
    api_reloader.execute_if_updated
  end
end

当我更改 app/api 下的文件时,我可以看到“正在重新加载!”日志中的消息,所以我知道正在调用 api_reloader 回调。但这些更改并未生效。这让我怀疑 config.autoload_paths,但看起来都是正确的。

这是使用 Rails 3.2。建议会很棒,因为显然没有重新加载处理这些东西是非常烦人的。

【问题讨论】:

  • 你是如何安装 API 的?
  • API在routes.rb中用mount Api => '/api'挂载,然后在main /app/api/api.rb:class Api < Grape::API; cascade false; mount Acme::MyApi; end

标签: ruby-on-rails grape-api


【解决方案1】:

如果您只是为了路线而这样做,我找到了一种解决方法。我正在使用 rake 任务来显示 GRAPE 的路线。

rake任务链接:https://gist.github.com/pragmaticivan/9a9d925e7bbcc8df72f6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多