`rake notes`应该扫描haml

时间:2015-09-10 03:37:43

标签: ruby-on-rails rake ruby-on-rails-4.2

根据guides

  

...在扩展名为.builder,.rb,.erb,.haml和.slim的文件中完成,用于默认和自定义注释。

但即使手动配置,它也无法正常工作:

$ rails -v
  Rails 4.2.3
$ grep -r annotations config/environments/development.rb
  config/environments/development.rb:  config.annotations.register_extensions('haml') { |a| /#\s*(#{a}):?\s*(.*)$/ }
$ grep -r TODO app/views
  app/views/orders/show.html.haml:  -# TODO: Add link
$ rake notes
  app/models/order.rb:
    * [12] [TODO] Refactor

任何人都知道如何让它发挥作用?

2 个答案:

答案 0 :(得分:5)

简短回答

添加此行

SourceAnnotationExtractor::Annotation.register_extensions("haml") { |tag| /(?:\/\/|#)\s*(#{tag}):?\s*(.*)$/ }

在Rails应用程序内部的Rakefile末尾。

更长的答案

rake notes

在那里定义: https://github.com/rails/rails/blob/master/railties/lib/rails/tasks/annotations.rake

task :notes do
  SourceAnnotationExtractor.enumerate "OPTIMIZE|FIXME|TODO", tag: true
end

此任务不依赖于:环境,因此,例如,此任务不会执行config / initializers /或config / environment中的任何代码。放置任何配置都不会对rake音符产生任何影响。

Rakefile只需要config / application.rb。 https://github.com/rails/rails/blob/master/railties/lib/rails/source_annotation_extractor.rb告诉我们,我们可以为Annotations定义一个新的文件扩展名,如下所示:

SourceAnnotationExtractor::Annotation.register_extensions("css", "scss", "sass", "less", "js") { |tag| /\/\/\s*(#{tag}):?\s*(.*)$/ }

所以在Rakefile或config / application.rb中添加这一行将在执行notes任务之前定义新的注释。

我不确定为什么它没有为haml开箱即用,因为它是在haml-rails中定义的。 目前,使用Rails 4.2.2和haml-rails 0.9.0,上面的简短答案应该可以。

答案 1 :(得分:0)

将以下内容放入config/initializers/

Rails.application.config.annotations.tap do |notes|
  notes.register_extensions('haml') { |annotation| %r(#\s*(#{annotation}):?\s*(.*?)$) }
end

有关详细信息,请参阅this