如何在开发模式下为每个请求重新加载 gem? [英] How to reload a gem on every request in Development mode?

查看:31
本文介绍了如何在开发模式下为每个请求重新加载 gem?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 Rails 应用程序,它使用我正在积极开发的 gem.如何指示应用在每次请求时重新加载 gem?

解决方案

这个解决方案 几乎可以工作,但出于某种原因,我必须将其放入 application.rb 而不是 environments/development.rb 否则无法识别 autoload_paths.

我添加了一些额外的东西来自动获取路径.

如果 Rails.env.development?reload_gems = %w(my_gem other_gem) # 应该自动重新加载的宝石名称config.autoload_paths += Gem.loaded_specs.values.inject([]){ |a,gem|a += gem.load_paths 如果 reload_gems.include?宝石名称;一种 }需要active_support/dependencies"ActiveSupport::Dependencies.explicitly_unloadable_constants += reload_gems.map { |gem|gem.classify }结尾

本地 gem 可以用 gem 'my_gem', :path => 添加'../my_gem'

I've got a Rails app which uses a gem I'm actively developing. How can I instruct the app to reload the gem on every request?

解决方案

This solution almost works but for some reason I have to put it into application.rb and not in environments/development.rb otherwise the autoload_paths are not recognized.

I added some additional stuff which fetches the paths automagically.

if Rails.env.development?
  reload_gems = %w(my_gem other_gem) # names of gems which should autoreload
  config.autoload_paths += Gem.loaded_specs.values.inject([]){ |a,gem| a += gem.load_paths if reload_gems.include? gem.name; a }
  require 'active_support/dependencies'
  ActiveSupport::Dependencies.explicitly_unloadable_constants += reload_gems.map { |gem| gem.classify }
end

Local gems can be added with gem 'my_gem', :path => '../my_gem'

这篇关于如何在开发模式下为每个请求重新加载 gem?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆