Class: Car

Inherits:
Vehicle show all
Defined in:
car.rb

State Machines

This class contains 1 state machine(s).

state

State machine diagram for state

Instance Attribute Summary

Attributes inherited from Vehicle

#state

Instance Method Summary (collapse)

Methods inherited from Vehicle

#can_crash?, #can_idle?, #can_ignite?, #can_park?, #can_repair?, #can_shift_down?, #can_shift_up?, #crash, #crash!, #crash_transition, #fire_state_event, #first_gear?, human_state_event_name, human_state_name, #human_state_name, #idle, #idle!, #idle_transition, #idling?, #ignite, #ignite!, #ignite_transition, #park, #park!, #park_transition, #parked?, #repair, #repair!, #repair_transition, #second_gear?, #shift_down, #shift_down!, #shift_down_transition, #shift_up, #shift_up!, #shift_up_transition, #stalled?, #state?, #state_events, #state_name, #state_paths, #state_transitions, #third_gear?

Instance Method Details

- (Boolean) backing_up?

Checks whether :backing_up is the current state.

Returns:

  • (Boolean)

    true if this is the current state, otherwise false



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'car.rb', line 4

state_machine do
  event :reverse do
    transition [:parked, :idling, :first_gear] => :backing_up
  end
  
  event :park do
    transition :backing_up => :parked
  end
  
  event :idle do
    transition :backing_up => :idling
  end
  
  event :shift_up do
    transition :backing_up => :first_gear
  end
end

- (Boolean) can_reverse?(requirements = {})

Checks whether :reverse can be fired.

Parameters:

  • requirements (Hash) (defaults to: {})

    The transition requirements to test against

Options Hash (requirements):

  • :from (Symbol) — default: the current state

    One or more initial states

  • :to (Symbol)

    One or more target states

  • :guard (Boolean)

    Whether to guard transitions with conditionals

Returns:

  • (Boolean)

    true if :reverse can be fired, otherwise false



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'car.rb', line 4

state_machine do
  event :reverse do
    transition [:parked, :idling, :first_gear] => :backing_up
  end
  
  event :park do
    transition :backing_up => :parked
  end
  
  event :idle do
    transition :backing_up => :idling
  end
  
  event :shift_up do
    transition :backing_up => :first_gear
  end
end

- (Boolean) reverse(*args)

Fires the :reverse event.

Parameters:

  • args (Array)

    Optional arguments to include in transition callbacks

Returns:

  • (Boolean)

    true if the transition succeeds, otherwise false



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'car.rb', line 4

state_machine do
  event :reverse do
    transition [:parked, :idling, :first_gear] => :backing_up
  end
  
  event :park do
    transition :backing_up => :parked
  end
  
  event :idle do
    transition :backing_up => :idling
  end
  
  event :shift_up do
    transition :backing_up => :first_gear
  end
end

- (Boolean) reverse!(*args)

Fires the :reverse event, raising an exception if it fails.

Parameters:

  • args (Array)

    Optional arguments to include in transition callbacks

Returns:

  • (Boolean)

    true if the transition succeeds

Raises:

  • (StateMachine::InvalidTransition)

    If the transition fails



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'car.rb', line 4

state_machine do
  event :reverse do
    transition [:parked, :idling, :first_gear] => :backing_up
  end
  
  event :park do
    transition :backing_up => :parked
  end
  
  event :idle do
    transition :backing_up => :idling
  end
  
  event :shift_up do
    transition :backing_up => :first_gear
  end
end

- (StateMachine::Transition) reverse_transition(requirements = {})

Gets the next transition that would be performed if :reverse were to be fired.

Parameters:

  • requirements (Hash) (defaults to: {})

    The transition requirements to test against

Options Hash (requirements):

  • :from (Symbol) — default: the current state

    One or more initial states

  • :to (Symbol)

    One or more target states

  • :guard (Boolean)

    Whether to guard transitions with conditionals

Returns:

  • (StateMachine::Transition)

    The transition that would be performed or nil



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'car.rb', line 4

state_machine do
  event :reverse do
    transition [:parked, :idling, :first_gear] => :backing_up
  end
  
  event :park do
    transition :backing_up => :parked
  end
  
  event :idle do
    transition :backing_up => :idling
  end
  
  event :shift_up do
    transition :backing_up => :first_gear
  end
end