railroady를 이용하여Graphiviz에서 AASM의 상태 이동도를 출력합니다

4895 단어 GraphvizAASMRuby
Graphiviz로 AASM 인코딩된 다음 코드를 출력해 보십시오
cpu_state.rb
require 'aasm'
class CPUState
  include AASM
  aasm do
    state :new, :initial => true
    state :ready
    state :waiting
    state :running
    state :terminated

    event :wake_up do
      transitions :from => :new,     :to => :ready
      transitions :from => :waiting, :to => :ready
    end
    event :schedule do
      transitions :from => :ready, :to => :running
    end
    event :preempt do
      transitions :from => :running, :to => :ready
    end
    event :yield do
      transitions :from => :running, :to => :waiting
    end
    event :terminate do
      transitions :from => :running, :to => :terminated
    end
  end
end

차리다


Gemfile
gem "railroady"
Rakefile
namespace "doc" do
  desc "print dot eg) | dot -Tpng -o aasm.png"
  task "dot" do
    require 'railroady/options_struct'
    require 'railroady/aasm_diagram'
    a = AasmDiagram.new
    require "./cpu_state"
    a.send(:process_aasm_class, CPUState)
    puts a.instance_variable_get(:@graph).to_dot
  end
end

실행

$ bundle exec rake doc:dot | dot -Tpng -o cpu_state.png
※ AASM4.0 이후에는 deprecated를 많이 보내지만, railroady는 좋지 않습니다.p)

후기


railroady는 Rails 프로젝트를 대상으로 AASM에서 조립한 코드를 단순히 출력하기는 어렵다.
이 방법으로 대체로 출력할 수 있다.privte method이기 때문에 이런 명칭은 어때요?아니면, 나는 railroady의 작가에게 좀 더 통용되는 제안을 하고 싶다.

좋은 웹페이지 즐겨찾기