can/should 如何在 config/environment 中包含 Ruby 项目文件依赖项?

How can/should I include Ruby project file dependencies in config/environment?

新 Ruby 在这里。在我关于 Ruby 的讲座中,我遇到了各种 tricks/shortcuts 用于将文件依赖项添加到 config/environment 文件,以便程序顺利运行。我一直不清楚其中哪些组合在一起时是多余的;哪些是最佳实践;并且完全没用 and/or 错误,应该从长远来看。澄清将不胜感激!

我遇到的:

也欢迎加入其他方式!

config/environment.rb是Rails框架本身有意见的文件。在您的应用程序的整个生命周期中,您将被积极地激励不要修改此文件(如果可以避免的话)。这将允许最简单的升级路径。考虑将初始化放在 config/initializers.

中的文件中

如果您的代码从根本上改变了 Rails 本身的行为,以至于 config/initializers 中的位置失去了效力,或者如果您的代码的长期维护不是问题,我会考虑以上几点。项目 2+3 通过附加到您的 LOAD_PATH 来工作,我不推荐这样做,更不用说称为最佳实践了。 (默认情况下,添加 RAILS_ROOT/config 可能不是主要问题,但您可能会产生一些非常难以调试的错误。)

config/environment.rb 的位置已经很长时间没有改变,因此相对要求(即选项 #1)可能没问题。 require File.dirname(__FILE__) 本身什么都不做(你需要一个目录)但值得记住像 require File.join[File.dirname(__FILE__), '../lib/your_file.rb'] 这样的方法,无论加载路径或工作目录问题如何,它都将工作相同。这就是我会做的。

我不会为此使用 gem,因为 gem 的行为可能会以不可预测的方式发生变化,而您已经处于 Rails 可以使你的选择不方便。