Class: RemoteFiles::FileStore
  
  
  
  Instance Attribute Summary
  
  
  #identifier
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  #[]=, #file_from_url, #initialize, #options, #read_only?, #to_sym
  
    Instance Method Details
    
      
  
  
    #delete!(identifier)  ⇒ Object 
  
  
  
  
    | 
45
46
47
48
49 | # File 'lib/remote_files/file_store.rb', line 45
def delete!(identifier)
  (directory + identifier).delete
rescue Errno::ENOENT
  raise NotFoundError, $!.message, $!.backtrace
end | 
 
    
      
  
  
    #directory  ⇒ Object 
  
  
  
  
    | 
9
10
11
12
13
14 | # File 'lib/remote_files/file_store.rb', line 9
def directory
  @directory ||= Pathname.new(options[:directory]).tap do |dir|
    dir.mkdir unless dir.exist?
    raise "#{dir} is not a directory" unless dir.directory?
  end
end | 
 
    
      
  
  
    #directory_name  ⇒ Object 
  
  
  
  
    | 
59
60
61 | # File 'lib/remote_files/file_store.rb', line 59
def directory_name
  options[:directory].to_s
end | 
 
    
      
  
  
    #retrieve!(identifier)  ⇒ Object 
  
  
  
  
    | 
33
34
35
36
37
38
39
40
41
42
43 | # File 'lib/remote_files/file_store.rb', line 33
def retrieve!(identifier)
  content = (directory + identifier).read
  RemoteFiles::File.new(identifier,
    :content      => content,
    :stored_in    => [self]
      )
rescue Errno::ENOENT
  raise NotFoundError, $!.message, $!.backtrace
end | 
 
    
      
  
  
    #store!(file)  ⇒ Object 
  
  
  
  
    | 
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | # File 'lib/remote_files/file_store.rb', line 16
def store!(file)
  file_name = directory + file.identifier
  FileUtils.mkdir_p(file_name.parent)
  file_name.open('wb') do |f|
    if file.content.respond_to?(:read)
      while blk = file.content.read(2048)
        f << blk
      end
    else
      f.write(file.content)
          end
  end
end | 
 
    
      
  
  
    #url(identifier)  ⇒ Object 
  
  
  
  
    | 
51
52
53 | # File 'lib/remote_files/file_store.rb', line 51
def url(identifier)
  "file://localhost#{directory + identifier}"
end | 
 
    
      
  
  
    #url_matcher  ⇒ Object 
  
  
  
  
    | 
55
56
57 | # File 'lib/remote_files/file_store.rb', line 55
def url_matcher
  @url_matcher ||= /file:\/\/localhost#{directory}\/(.*)/
end |