使用rails生成器修改现有文件?

时间:2009-05-16 18:33:03

标签: ruby-on-rails

我正在编写一个生成器,它会添加一些我的服务器将使用的文件。我还想在environment.rb文件中添加一行。这可以使用生成器完成,还是应该使用应用程序模板?

2 个答案:

答案 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行)并在其后面填充新行。