class KManager::Resources::FileResource
A file resource represents context that is loaded via a file.
File resources have the benefit that file watchers can watch them locally and reload these resources on change.
Attributes
file[R]
Full path to file
example: /Users/davidcruwys/dev/kgems/k_dsl/spec/factories/dsls/common-auth/admin_user.rb
Public Class Methods
instance(**opts)
click to toggle source
# File lib/k_manager/resources/file_resource.rb, line 28 def instance(**opts) file = opts[:file] extension = ::File.extname(file).downcase case extension when '.rb' KManager::Resources::RubyFileResource.new(**opts) when '.csv' KManager::Resources::CsvFileResource.new(**opts) when '.json' KManager::Resources::JsonFileResource.new(**opts) when '.yaml' KManager::Resources::YamlFileResource.new(**opts) else KManager::Resources::UnknownFileResource.new(**opts) end end
new(**opts)
click to toggle source
Calls superclass method
KManager::Resources::BaseResource::new
# File lib/k_manager/resources/file_resource.rb, line 19 def initialize(**opts) super(**opts) @source = :file @file = opts[:file] guard end
Public Instance Methods
debug()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/k_manager/resources/file_resource.rb, line 71 def debug log.section_heading('resource') log.kv 'source' , source , 15 log.kv 'file' , file , 15 log.kv 'type' , type , 15 log.kv 'infer_key', infer_key , 15 log.kv 'status' , status , 15 # log.kv 'project' , project log.kv 'content' , content.nil? ? '' : content[0..100].gsub("\n", '\n') , 15 log.kv 'documents', documents.length , 15 documents.each(&:debug) end
infer_key()
click to toggle source
Infer key is the file name without the extension stored in dash-case
# File lib/k_manager/resources/file_resource.rb, line 49 def infer_key file_name = Pathname.new(@file).basename.sub_ext('').to_s Handlebars::Helpers::StringFormatting::Dasherize.new.parse(file_name) end
load_content()
click to toggle source
# File lib/k_manager/resources/file_resource.rb, line 54 def load_content if File.exist?(file) begin @content = File.read(file) rescue StandardError => e log.error e end else log.error "Source file not found: #{file}" end end
register_document()
click to toggle source
# File lib/k_manager/resources/file_resource.rb, line 66 def register_document attach_document(create_document) end
Private Instance Methods
guard()
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/k_manager/resources/file_resource.rb, line 88 def guard raise KType::Error, 'File resource requires a file option' if @file.nil? || @file == '' end