如何在不重新启动Rails的情况下自动加载gem?

时间:2017-07-07 11:05:22

标签: ruby-on-rails metaprogramming bundler

我有一个Rails 5项目,而且我对元编程领域很深。

其中一个要求是系统管理员可以动态修改某些gem依赖项(即Gemfile)。这仅限于可能添加的几个宝石,它们都具有类似的:: Rails :: Engine结构。

我一直在玩几种策略,包括<Module>.autoload :<class_name>, <file path>,但它不会加载任何依赖项。

我想做的是在rails运行时动态加载更新的Gemfile.lock(基本上是Bundler.setup),而不必重新启动服务器。

我可以运行bundle.install,修改自动加载路径,再次运行Bundler.setup吗?

如果失败了,那么bundle install然后rails重启会破坏多少?

1 个答案:

答案 0 :(得分:0)

经过大量调查后,看起来不安全。 Bundler处理依赖关系很好,并且比我在这种情况下编写的要好。此外,Rails可以很好地处理重启({{1}}),所以我只是这样做。