Шеф-повар new_resource. <value>против <value> - PullRequest
0 голосов
/ 08 марта 2019

Я унаследовал кулинарную книгу, используя другую кулинарную книгу с пользовательским ресурсом.

Я пытаюсь выяснить использование new_resource в этом коде.

В приведенном ниже коде path new_resource.fullpath вызывает «неопределенный метод».

Когда я изменил эту строку на path fullpath для ссылки на локальную переменную, она работала просто отлично. Я не могу понять, каково было предыдущее намерение.

Я уверен, что это легко. Ищу ELI5. Спасибо!

Полный код блока.

resource_name :mb_worker_role
default_action :create

property :service_name, String, name_property: true
property :root_path, String, required: true
property :executable, String, required: true
property :wcf_port, [Integer, String], default: 808
property :health_port, [Integer, String], default: 8000
property :use_dummy, [TrueClass, FalseClass], default: true

action :create do
  # Create firewall allow for WCF port
  windows_firewall_rule "#{new_resource.service_name} - WCF" do
    localport new_resource.wcf_port.to_s
    protocol 'TCP'
    firewall_action :allow
  end

  # Create firewall allow for health port
  windows_firewall_rule "#{new_resource.service_name} - Health" do
    localport new_resource.health_port.to_s
    protocol 'TCP'
    firewall_action :allow
  end

  # Full path to service executable at root_path\executable
  fullpath = "#{new_resource.root_path}\\#{new_resource.executable}"

  # Create directory for worker role application root
  directory new_resource.root_path do
    recursive true
    action :create
  end

  # Set NetTCPPortSharing to start on demand
  windows_service 'NetTCPPortSharing' do
    action :configure_startup
    startup_type :manual
  end

  # Stage the dummy worker role executable if requested
  # Only used to verify this resource when testing
  if property_is_set?(:use_dummy)
    cookbook_file 'Stage dummy worker role executable' do
      # path new_resource.fullpath
      path fullpath
      cookbook 'mb_worker_role'
      source 'WorkerRole.Default.exe'
      only_if { new_resource.use_dummy }
      action :create
    end
  end

  # Create windows service if it does not exist
  powershell_script "Installing Windows service #{new_resource.service_name}" do
    code <<-EOH
      # Create the Windows service
      sc.exe create "#{new_resource.service_name}" binPath="#{fullpath}"
    EOH
    not_if "(Get-Service -Name #{new_resource.service_name}).Name -eq '#{new_resource.service_name}'"
  end

  # Set service to automatic and make sure it's running
  windows_service new_resource.service_name do
    action [:configure_startup, :enable, :start]
    startup_type :automatic
  end
end

1 Ответ

0 голосов
/ 12 марта 2019

path fullpath - это магическая система псевдонимов, которую мы активно поощряем на этом этапе. Было приятно попробовать, но у синтаксиса много проблем, которые приводят к неожиданному поведению. Используйте new_resource.fullpath, гораздо меньшее количество пушек.

...