0

在 Rails 生成器上工作,我希望能够根据用户的设置复制 haml/erb 模板。我试过看Rails.application.config.app_generators.template_engine,但无论是否设置了 haml 或 erb,我似乎都得到了一个空的哈希值。

我现在正在做的是:

file_type = 'erb'
begin
  if Haml
    file_type = 'haml'
  end
rescue NameError
end
copy_file "views/errors/internal_server_error.html.#{file_type}", "app/views/errors/internal_server_error.html.#{file_type}"
copy_file "views/errors/not_found.html.#{file_type}", "app/views/errors/not_found.html.#{file_type}"
copy_file "views/errors/unprocessable_entity.html.#{file_type}", "app/views/errors/unprocessable_entity.html.#{file_type}"

但这感觉非常hacky。有没有更好的办法?

4

1 回答 1

0

能够弄清楚。使用 haml,它将选项上的 template_engine 设置为 :haml。在生成器内部,我可以像这样访问该值:

Rails::Generators.options[:rails][:template_engine]

可以在这里查看我是如何使用它的:https ://github.com/agmcleod/mosaic-errors/blob/95dff6fb8140b74e636d1dee0f6bf023a50706c6/lib/generators/errors_generator.rb

于 2013-09-18T21:51:28.543 回答