무슨 일이 일어나고 있는지 이해하려고하는 데 문제가 있습니다. 왜 순수 루비 코드가 코드가 마지막에 놓 였는지에도 불구하고 실행되는 이유는 무엇입니까? 포함 :LWRP 순수한 루비 코드 대 다른 요리 책 리소스 실행 순서
action :install do
...
windows_package "#{installation_name}" do
source "#{Chef::Config[:file_cache_path]}\\#{installer_filename}"
options "INSTALLDIR=\"#{installation_path}\""
action :install
not_if {::Dir.exists?("#{installation_path}\\bin")}
end
env "MYSQL_PATH" do
value "#{installation_path}"
end
windows_path "#{installation_path}\\bin" do
action :add
end
windows_batch "Installing Service" do
code <<-EOH
set MYSQL_PATH="#{installation_path}"
call %MYSQL_PATH%\\bin\\mysqld-nt.exe --install MySQL
EOH
end
service "MySQL" do
action :start
end
service "MySQL" do
action :enable
end
change_pass_str = "call \"#{installation_path}\\bin\\mysql.exe\" -u root --execute \"UPDATE mysql.user SET Password=PASSWORD('#{root_password}') WHERE User='root';FLUSH PRIVILEGES;\""
puts change_pass_str
password_set_result = system(change_pass_str)
log !password_set_result ? "Password wasn't changed since root already have a password defined. Maybe there's still data from a previous installation." : "Password has been set!"
end
변수 정의를 넣지 않았으며 잘 정의되어 있다는 사실을 무시하십시오. 건은 lwrp의이 부분은
change_pass_str = "call \"#{installation_path}\\bin\\mysql.exe\" -u root --execute \"UPDATE mysql.user SET Password=PASSWORD('#{root_password}') WHERE User='root';FLUSH PRIVILEGES;\""
puts change_pass_str
password_set_result = system(change_pass_str)
을 실행할 때이 아직 설치되지 않기 때문에이 블록이 작업의 끝이라고에도 불구하고,
#{installation_path}\\bin\\mysql.exe
을 찾을 수 있다는 것입니다.
내 실수는 무엇입니까? 왜 다른 (이미 Windows LWRP에서이 경우에 정의 된) 리소스가 시작에서 끝 부분에서 실행됩니까? 어떻게 해결할 수 있습니까?