我怎样才能/应该在config / environment中包含Ruby项目文件依赖项?

时间:2016-04-19 18:40:09

标签: ruby-on-rails ruby file dependencies environment

这里有新的Rubyist。在我关于Ruby的讲座中,我遇到了各种技巧/快捷方式,用于向config/environment文件添加文件依赖项,以便程序可以顺利运行。我不清楚这些中的哪一个在结合时是多余的;哪些是最佳做法;哪些是完全无用的和/或错误的,应该做很长的路。澄清将不胜感激!

我遇到的那些:

  • require_relative "../lib/test1.rb"
  • : << '.' & require "lib/test1.rb"
  • : << '.' & Dir['lib/*.rb'].each {|f| require f}
  • require File.dirname(__FILE__)
  • "require-all" gem

也可以包括其他方式!

1 个答案:

答案 0 :(得分:1)

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可能使您的选择不方便的区域。