Class: Figaro::Backup::Rails::Engine

Inherits:
Rails::Engine
  • Object
show all
Defined in:
lib/figaro/backup/rails/engine.rb

Instance Method Summary collapse

Instance Method Details

#build_message(message) ⇒ Object



56
57
58
# File 'lib/figaro/backup/rails/engine.rb', line 56

def build_message(message)
  "[Figaro Backup] #{message}"
end

#check_things_out!Object



10
11
12
13
14
15
16
17
18
# File 'lib/figaro/backup/rails/engine.rb', line 10

def check_things_out!
  raise       build_message "Oops... #{Figaro.application.path.inspect} is missing." unless File.exists?(Figaro.application.path)
  raise       build_message "You should really use git!" unless git_installed?
  raise       build_message "Make sure to add #{Figaro.application.path.inspect} to .gitignore!" unless git_ignored?
  return puts(build_message "YAY! Your project lives in Dropbox!") if in_dropbox?(Figaro.application.path)
  raise       build_message "Make sure that #{Figaro.application.path.inspect} is symlinked" unless symlinked?
  raise       build_message "Your symlink #{symlink_target_path.inspect} should be in Dropbox!" unless symlinked_to_dropbox?
  puts        build_message "YAY! Your Figaro config is symlinked to Dropbox!"
end

#git_ignored?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/figaro/backup/rails/engine.rb', line 24

def git_ignored?
  `git check-ignore "#{Figaro.application.path}"; echo $?`.to_i == 0
end

#git_installed?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/figaro/backup/rails/engine.rb', line 20

def git_installed?
  `which git; echo $?`.to_i == 0
end

#git_root_pathObject



28
29
30
# File 'lib/figaro/backup/rails/engine.rb', line 28

def git_root_path
  `git rev-parse --show-toplevel`.strip
end

#in_dropbox?(file_path) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
50
51
52
53
54
# File 'lib/figaro/backup/rails/engine.rb', line 44

def in_dropbox?(file_path)
  dir = File.dirname(file_path)
  
  return false if dir == '/' || dir == Dir.home

  check = %w{.dropbox .dropbox.cache}
  files = check.map{|file| File.join(dir, file)}
  found = files.any?{|path| Dir.exists?(path)}

  found || in_dropbox?(dir)
end


36
37
38
# File 'lib/figaro/backup/rails/engine.rb', line 36

def symlink_target_path
  File.readlink(Figaro.application.path) if symlinked?
end

#symlinked?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/figaro/backup/rails/engine.rb', line 32

def symlinked?
  File.symlink?(Figaro.application.path)
end

#symlinked_to_dropbox?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/figaro/backup/rails/engine.rb', line 40

def symlinked_to_dropbox?
  symlinked? && in_dropbox?(symlink_target_path)
end