2017-05-10 2 views
0

ich das folgende Stück Rezept Code habenWARNEN: Cloning Ressource-Attribute aus dem Stand der Ressource

# change permissions and group 
execute 'set group' do 
    command 'sudo chgrp -R tomcat /opt/tomcat/conf' 
end 

%w(/opt/tomcat/conf /opt/tomcat/conf/*).each do |tomcat_directory| 
    execute 'set directory permissions' do 
    command 'sudo chmod g+rwx ' + tomcat_directory 
    end 
end 

Wenn ich laufen chef exec rspec --color ich alle Tests sehen vorbei, aber es gibt auch eine Warnung

[2017-05-10T21:12:36+05:30] WARN: Cloning resource attributes for execute[set directory permissions] from prior resource 
Previous execute[set directory permissions]: C:/Users/AASJD~1/AppData/Local/Temp/chefspec20170510-14248-1faza0file_cache_path/cookbooks/tomcat/recipes/installtomcat.rb:25:in `block in from_file' 
Current execute[set directory permissions]:/Users/AASJD~1/AppData/Local/Temp/chefspec20170510-14248-1faza0file_cache_path/cookbooks/tomcat/recipes/installtomcat.rb:25:in `block in from_file' 
(CHEF-3694)C:/Users/AASJD~1/AppData/Local/Temp/chefspec20170510-14248-1faza0file_cache_path/cookbooks/tomcat/recipes/installtomcat.rb:25:in `block in from_file'. 
Please see https://docs.chef.io/deprecations_resource_cloning.html for further details and information on how to correct this problem. at C:/opscode/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.19.36-universal-mingw32/lib/chef/event_dispatch/dispatcher.rb:43:in `call' 

https://docs.chef.io/deprecations_resource_cloning.html Wie über diesen Link sollten die Ressourcen nicht die gleichen Namen haben oder die Ziele sollten nicht gleich sein, aber sie sind nicht in diesem Fall. Warum kommt dann dieser Fehler?

Antwort

0

Es war wegen der Schleife über Array. Der folgende Code das Problem behoben

%w(/opt/tomcat/conf /opt/tomcat/conf/*).each do |tomcat_directory| 
    execute 'sudo chmod g+rwx ' + tomcat_directory 
end 
+0

Von Ihrem ersten Code, könnten Sie einfach 'interpoliert haben tomcat_directory' in den Ressourcenname:' ​​ausführen „set # {tomcat_directory} Verzeichnisberechtigungen“ do' funktioniert hätte – Tensibai

+0

Ja, ich habe irgendwo gelesen, das ist keine sehr gute Praxis? – aaj

+1

Das Gegenteil, aufgrund der Eingabe von Ruby durch Duck, kann das Hinzufügen von Strings zu Fremder-Verhalten führen. Ie: x + "A" wird wahrscheinlich mit dem dezimalen ASCII-Wert enden, wenn A zu x anstelle von "1A" hinzugefügt wird Wenn x 1 ist 1 – Tensibai