我正在编写一个生成器,它会添加一些我的服务器将使用的文件。我还想在environment.rb文件中添加一行。这可以使用生成器完成,还是应该使用应用程序模板?
答案 0 :(得分:2)
不要修改environment.rb,而是查看使用Rails initializers可以执行的操作。基本上,您只需要在config / initializers中创建一个新的Ruby .rb文件,并将配置加载代码保存在那里。如果您需要按环境配置,最好在config /中创建另一个(通常是YAML)文件,该文件将存储每个环境的配置变量并将YAML加载到初始化程序中。
答案 1 :(得分:2)
您可以使用initializers作为自定义初始化代码,但是如果您发现使用生成器添加到现有文件是合适的,那么内置生成器将如何执行此操作:
# Excerpted from template_runner.rb
# Make an entry in Rails routing file config/routes.rb
def route(routing_code)
log 'route', routing_code
sentinel = 'ActionController::Routing::Routes.draw do |map|'
in_root do
gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
"#{match}\n #{routing_code}\n"
end
end
end
正如您所看到的,它只是弄清楚他们想要代码的去向(sentinal
行)并在其后面填充新行。