我如何在不重新启动 Rails 的情况下自动加载 gem?
How would I autoload a gem without having to restart Rails?
我有一个 Rails 5 项目,而且我对元编程领域很感兴趣。
其中一个要求是某些 gem 依赖项(即 Gemfile)可以由系统管理员即时修改。这仅限于可能添加的几个 gem,它们都具有相似的 ::Rails::Engine 结构。
我玩了好几种策略,包括<Module>.autoload :<class_name>, <file path>
但是它没有加载任何依赖项。
我想做的是动态加载更新的 Gemfile.lock(基本上是 Bundler.setup
),而 rails 是 运行ning,而无需重新启动服务器.
我可以 运行 bundle.install
,修改自动加载路径,再次 运行 Bundler.setup 之类的吗?
否则,bundle install
然后 rails 重新启动会中断很多吗?
经过大量调查,看起来这不是一件安全的事情。 Bundler 可以很好地处理依赖关系,并且比我在这种情况下可以编写的更好。此外,Rails 可以很好地处理重启 (touch restart.txt
),所以我就这样做。
我有一个 Rails 5 项目,而且我对元编程领域很感兴趣。
其中一个要求是某些 gem 依赖项(即 Gemfile)可以由系统管理员即时修改。这仅限于可能添加的几个 gem,它们都具有相似的 ::Rails::Engine 结构。
我玩了好几种策略,包括<Module>.autoload :<class_name>, <file path>
但是它没有加载任何依赖项。
我想做的是动态加载更新的 Gemfile.lock(基本上是 Bundler.setup
),而 rails 是 运行ning,而无需重新启动服务器.
我可以 运行 bundle.install
,修改自动加载路径,再次 运行 Bundler.setup 之类的吗?
否则,bundle install
然后 rails 重新启动会中断很多吗?
经过大量调查,看起来这不是一件安全的事情。 Bundler 可以很好地处理依赖关系,并且比我在这种情况下可以编写的更好。此外,Rails 可以很好地处理重启 (touch restart.txt
),所以我就这样做。