在演示者上运行annotate gem

时间:2015-07-29 02:05:41

标签: ruby-on-rails annotate

annotate gem的自述文件提及由特定宝石生成的模型,装置,规格和文件,但不提及演示者。

有没有办法为演示者添加注释添加注释?

1 个答案:

答案 0 :(得分:0)

似乎没有一种宝石支持的方式将模型注释添加到包围模型的其他类型的类,如演示者,装饰者和参展商。但是,因为几乎所有gem中的主要代码都在一个文件中(lib/annotate/annotate_models.rb),你可以bundle open annotate并在其上进行攻击以获得你想要的东西,假设你不介意一点猴子补丁。例如,假设您的演示者位于app/presenters,您可以直接对文件进行以下类型的修改:

module AnnotateModels
  # Towards the top of the file where all the directory
  # declarations are...

  PRESENTER_DIR         = File.join("app", "presenters")
  PRESENTER_TEST_DIR    = File.join("test", "presenters")
  PRESENTER_SPEC_DIR    = File.join("spec", "presenters")

  PRESENTER_PATTERNS = [
    File.join(PRESENTER_DIR,  "%MODEL_NAME%_presenter.rb"),
    File.join(PRESENTER_TEST_DIR,  "%MODEL_NAME%_presenter_test.rb"),
    File.join(PRESENTER_SPEC_DIR, "%MODEL_NAME%_presenter_spec.rb"),
  ]

  # ...

  def annotate
    # ...
    # add in presenters to the list of file types that require annotations
    %w(test fixture factory serializer presenter).each do |key|
      # ...
    end
  end

  def remove_annotations
    # ...
    # add presenter files to list needing annotation removal
    (TEST_PATTERNS + FIXTURE_PATTERNS + FACTORY_PATTERNS + SERIALIZER_PATTERNS + PRESENTER_PATTERNS).map { ... }
  end

  # ...
end

当然不是一个优雅的解决方案,但如果这种改变适合你,你可以考虑分支宝石并在那里移动任何变化,或者甚至可以向宝石提交拉取请求。查看annotate gem问题跟踪器,似乎没有针对可以注释的文件类型添加演示者或装饰器的任何功能请求或讨论。