Gem 写了一个 Gem, 叫做 hot_reloader, 请大家帮忙测试一下.

zw963 · 2019年03月21日 · 最后由 zw963 回复于 2019年03月21日 · 5945 次阅读

如果你是一个 Rails 开发者,这个 Gem 的功能已经有了。

而且,Rails 6 的新 reloader 和这个 Gem 采用了同样的方案。

对于有需求的同学,欢迎测试,以及提出宝贵的意见。

安装

gem install hot_reloader

或者增加下列内容到 Gemfile

gem 'hot_reloader'

一个 Roda 例子:

# config.ru

require 'roda'
require 'hot_reloader'

if ENV['RACK_ENV'] == 'production'
  HotReloader.eager_load(__dir__, 'another/root/path')
  run App
else
  HotReloader.will_listen([__dir__, 'another/root/path'])
  run ->(env) { App.call(env) }
end

更多的详情,见相关的 Gem.

hot_reloader

zeitwerk

listen

似乎 Rails 6 的 ClassLoader 抽成接口所以可以替换了。

扯个题外的,我之前和 @dsh0416 讨论利用这个和 Bootsnap 的原理做 Ruby 代码的预编译,甚至加上简单的 AES 加密,用来保护外包之类项目的源码

似乎 Rails 6 的 ClassLoader 抽成接口所以可以替换了。

是的,好像有一个配置,可以选择使用老的 Module#const_missing 实现和新的 zeitwerk 采用的 Module#autoload 实现。

扯个题外的,我之前和 @dsh0416 讨论利用这个和 Bootsnap 的原理做 Ruby 代码的预编译,甚至加上简单的 AES 加密,用来保护外包之类项目的源码

👍

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