class Chef::FileCache
Public Class Methods
Create a full path to a given file in the cache. By default, also creates the path if it does not exist.
Parameters¶ ↑
- path
-
The path to create, relative to ::file_cache_path
- create_if_missing
-
True by default - whether to create the path if it does not exist
Returns¶ ↑
- String
-
The fully expanded path
# File lib/chef/file_cache.rb, line 203 def create_cache_path(path, create_if_missing=true) cache_dir = File.expand_path(File.join(file_cache_path, path)) if create_if_missing create_path(cache_dir) else cache_dir end end
Delete a file from the File Cache
Parameters¶ ↑
- path<String>
-
The path to the file you want to delete - should
be relative to file_cache_path
Returns¶ ↑
true
# File lib/chef/file_cache.rb, line 130 def delete(path) validate( { :path => path }, { :path => { :kind_of => String }, } ) cache_path = create_cache_path(path, false) if File.exists?(cache_path) File.unlink(cache_path) end true end
Find files in the cache by glob_pattern
Returns¶ ↑
- String
-
An array of file cache keys matching the glob
-
# File lib/chef/file_cache.rb, line 158 def find(glob_pattern) keys = Array.new Dir[File.join(file_cache_path, glob_pattern)].each do |f| if File.file?(f) keys << f[/^#{Regexp.escape(Dir[file_cache_path].first) + File::Separator}(.+)/, 1] end end keys end
Whether or not this file exists in the Cache
Parameters¶ ↑
- path
-
The path to the file you want to check - is relative
to file_cache_path
Returns¶ ↑
- True
-
If the file exists
- False
-
If it does not
# File lib/chef/file_cache.rb, line 177 def has_key?(path) validate( { :path => path }, { :path => { :kind_of => String }, } ) full_path = create_cache_path(path, false) if File.exists?(full_path) true else false end end
Read a file from the File Cache
Parameters¶ ↑
- path<String>
-
The path to the file you want to load - should
be relative to file_cache_path
- read<True/False>
-
Whether to return the file contents, or the path.
Defaults to true.
Returns¶ ↑
- String
-
A string with the file contents, or the path to the file.
Raises¶ ↑
- Chef::Exceptions::FileNotFound
-
If it cannot find the file in the cache
# File lib/chef/file_cache.rb, line 104 def load(path, read=true) validate( { :path => path }, { :path => { :kind_of => String } } ) cache_path = create_cache_path(path, false) raise Chef::Exceptions::FileNotFound, "Cannot find #{cache_path} for #{path}!" unless File.exists?(cache_path) if read File.read(cache_path) else cache_path end end
Move a file into the cache. Useful with the REST raw file output.
Parameters¶ ↑
- file<String>
-
The path to the file you want in the cache
- path<String>
-
The relative name you want the new file to use
# File lib/chef/file_cache.rb, line 67 def move_to(file, path) validate( { :file => file, :path => path }, { :file => { :kind_of => String }, :path => { :kind_of => String }, } ) file_path_array = File.split(path) file_name = file_path_array.pop if File.exists?(file) && File.writable?(file) FileUtils.mv( file, File.join(create_cache_path(File.join(file_path_array), true), file_name) ) else raise RuntimeError, "Cannot move #{file} to #{path}!" end end
Write a file to the File Cache.
Parameters¶ ↑
- path<String>
-
The path to the file you want to put in the cache - should
be relative to file_cache_path
- contents<String>
-
A string with the contents you want written to the file
- perm<String>
-
Sets file permission bits. Permission bits are platform
dependent; on Unix systems, see open(2) for details.
Returns¶ ↑
true
# File lib/chef/file_cache.rb, line 41 def store(path, contents, perm=0640) validate( { :path => path, :contents => contents }, { :path => { :kind_of => String }, :contents => { :kind_of => String }, } ) file_path_array = File.split(path) file_name = file_path_array.pop cache_path = create_cache_path(File.join(file_path_array)) File.open(File.join(cache_path, file_name), "w", perm) do |io| io.print(contents) end true end
Private Class Methods
# File lib/chef/file_cache.rb, line 214 def file_cache_path Chef::Config[:file_cache_path] end