class Archfiend::Generators::Daemon

Public Class Methods

source_root() click to toggle source

@return Path to templates, used by Thor

# File lib/archfiend/generators/daemon.rb, line 11
def self.source_root
  File.join(File.dirname(__FILE__), 'daemon', 'templates')
end

Public Instance Methods

create() click to toggle source

Creates a new daemon

# File lib/archfiend/generators/daemon.rb, line 16
def create
  # Init phase, creating directory structure and applying templates
  extensions.run_with_init_callbacks do
    create_from_templates
  end
  # Exec phase, running any due setup
  extensions.run_with_exec_callbacks do
    bundle_install unless skip_bundle_install?
  end
end
current_dir() click to toggle source

@return [Pathname] Path from which Archfiend was started

# File lib/archfiend/generators/daemon.rb, line 44
def current_dir
  Pathname.new(File.expand_path(Dir.pwd))
end
daemon_destination_dir() click to toggle source

@return [Pathname] The absolute path of the newly created daemon

# File lib/archfiend/generators/daemon.rb, line 39
def daemon_destination_dir
  Pathname.new(File.expand_path(File.join(Dir.pwd, daemon_name)))
end
daemon_path() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 48
def daemon_path
  Pathname.new(daemon_name)
end
processed_template_contents(source) click to toggle source

@param source [String] relative path to the template to be processed @return [String] the evaluated template contents

# File lib/archfiend/generators/daemon.rb, line 30
def processed_template_contents(source)
  context = instance_eval('binding')
  source  = File.expand_path(find_in_source_paths(source))
  CapturableERB.new(::File.binread(source), nil, '-', '@output_buffer').tap do |erb|
    erb.filename = source
  end.result(context)
end

Private Instance Methods

app() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 90
def app
  directory 'app', daemon_path.join('app')
end
bin() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 94
def bin
  directory 'bin', daemon_path.join('bin')

  chmod daemon_path.join('bin', 'start'), 'a+x'
  chmod daemon_path.join('bin', 'console'), 'a+x'
end
bundle_install() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 130
def bundle_install
  if defined? Bundler
    Bundler.with_clean_env do
      inside daemon_name do
        run 'bundle install'
      end
    end
  else
    inside daemon_name do
      run 'bundle install'
    end
  end
end
camelized_daemon_name() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 67
def camelized_daemon_name
  @camelized_daemon_name ||= daemon_name.camelize
end
config_directory() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 101
def config_directory
  directory 'config', daemon_path.join('config')
end
create_from_templates() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 63
def create_from_templates
  %w[readme rakefile gemfile app bin config_directory db lib log spec tmp rubocop].each { |action| __send__(action) }
end
db() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 105
def db
  directory 'db', daemon_path.join('db')
end
extensions() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 59
def extensions
  @extensions ||= Extensions.new(generator_options, self, 'daemon')
end
gemfile() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 86
def gemfile
  template 'Gemfile', daemon_path.join('Gemfile')
end
generator_options() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 55
def generator_options
  @generator_options ||= Options.new(args)
end
lib() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 109
def lib
  directory 'lib', daemon_path.join('lib')
end
log() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 113
def log
  directory 'log', daemon_path.join('log')
end
rakefile() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 82
def rakefile
  template 'Rakefile', daemon_path.join('Rakefile')
end
readme() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 78
def readme
  template 'README.md', daemon_path.join('README.md')
end
relative_archfiend_path() click to toggle source

@return Relative path to this gem, to be used in the Gemfile

# File lib/archfiend/generators/daemon.rb, line 72
def relative_archfiend_path
  gem_dir = Pathname.new(File.expand_path(File.join('..', '..', '..'), __dir__))

  gem_dir.relative_path_from(daemon_destination_dir)
end
rubocop() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 122
def rubocop
  template '.rubocop.yml', daemon_path.join('.rubocop.yml')
end
skip_bundle_install?() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 144
def skip_bundle_install?
  false
end
spec() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 117
def spec
  template '.rspec', daemon_path.join('.rspec')
  directory 'spec', daemon_path.join('spec')
end
tmp() click to toggle source
# File lib/archfiend/generators/daemon.rb, line 126
def tmp
  empty_directory daemon_path.join('tmp')
end