Class: Specinfra::CommandRunner::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/specinfra/command_runner/base.rb

Direct Known Subclasses

Itamae, Serverspec

Instance Method Summary collapse

Constructor Details

#initializeBase

Returns a new instance of Base.

Raises:

  • (NotImplementedError)


8
9
10
# File 'lib/specinfra/command_runner/base.rb', line 8

def initialize
  raise NotImplementedError
end

Instance Method Details

#check_command(*args) ⇒ Object

backend上でコマンドの実行結果のステータスコードが0かどうかを返す以下のURLのコードとほぼ同じgithub.com/itamae-kitchen/itamae/blob/v1.9.11/lib/itamae/resource/base.rb#L306



39
40
41
42
43
# File 'lib/specinfra/command_runner/base.rb', line 39

def check_command(*args)
  args << {} unless args.last.is_a?(Hash)
  args.last[:error] = false
  run_command(*args).exit_status == 0
end

#run_command(*args) ⇒ Object

backend上でコマンドを実行するためのメソッド, 配列で指定する以下のURLのコードとほぼ同じgithub.com/itamae-kitchen/itamae/blob/v1.9.11/lib/itamae/resource/base.rb#L295



48
49
50
51
# File 'lib/specinfra/command_runner/base.rb', line 48

def run_command(*args)
  args << {} unless args.last.is_a?(Hash)
  @backend.run_command(*args)
end

#run_specinfra(type, *args) ⇒ Object

typeを指定してspecinfraを呼び出すためのメソッド以下のURLのコードとほぼ同じgithub.com/itamae-kitchen/itamae/blob/v1.9.11/lib/itamae/resource/base.rb#L316 typeにはsymbolを指定, 命名規則は以下のURLのmethを参照github.com/mizzy/specinfra/blob/v2.72.1/lib/specinfra/command_factory.rb#L61



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/specinfra/command_runner/base.rb', line 17

def run_specinfra(type, *args)
  # 例えば以下のURLのcheck_is_ec2_instanceメソッドのコマンドを実行したい場合
  # https://github.com/mizzy/specinfra/blob/v2.72.1/lib/specinfra/command/base/localhost.rb#L3
  # typeには:check_localhost_is_ec2_instanceを指定する
  cmd = specinfra_command(type, *args)

  # typeにcheck_の文字が入っている場合check_commandを実行
  if type.to_s.start_with?('check_')
    check_command(cmd)
  else
    run_command(cmd)
  end
end

#specinfra_command(type, *args) ⇒ Object

Specinfraのコマンドを文字列で返す

Raises:

  • (NotImplementedError)


32
33
34
# File 'lib/specinfra/command_runner/base.rb', line 32

def specinfra_command(type, *args)
  raise NotImplementedError
end