Class: Evil::Setup::Generator

Inherits:
Object
  • Object
show all
Includes:
FileUtils
Defined in:
lib/evil/setup/generator.rb

Constant Summary collapse

ASSET_PATH =
File.join(File.dirname(__FILE__), '..', '..', '..', 'assets')
DIR_LAYOUT =
%w{
  tmp
  public/images
  public/stylesheets
  public/javascripts
  plugins
}
ASSETS =
[
  ['evil.css', 'public/stylesheets/evil.css'],
  ['evil.js', 'public/javascripts/evil.js'],
  ['evil-lib.js', 'public/javascripts/evil-lib.js'],
  ['logo.png', 'public/images/logo.png'],
  ['config.ru', 'config.ru']
]

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Generator

Returns a new instance of Generator.



29
30
31
# File 'lib/evil/setup/generator.rb', line 29

def initialize(path)
  @path = path
end

Instance Method Details

#copy_assets!Object



58
59
60
61
62
63
# File 'lib/evil/setup/generator.rb', line 58

def copy_assets!
  ASSETS.each do |file, dest|
    puts "File #{File.join(@path, dest)}"
    cp File.join(ASSET_PATH, file), File.join(@path, dest)
  end
end

#create_database!Object



49
50
51
52
53
54
55
56
# File 'lib/evil/setup/generator.rb', line 49

def create_database!
  ActiveRecord::Base.establish_connection :adapter => 'sqlite3', 
                                           :database => File.join(@path, 'evil.db')
                                         
  ActiveRecord::Migration.extend Evil::Setup::Migration
  
  ActiveRecord::Migration.create_evil_tables
end

#create_dir_tree!Object



42
43
44
45
46
47
# File 'lib/evil/setup/generator.rb', line 42

def create_dir_tree!
  DIR_LAYOUT.each do |dir|
    puts "Directory #{@path}/#{dir}"
    mkdir_p "#{@path}/#{dir}"
  end
end

#generate!Object



33
34
35
36
37
38
39
40
# File 'lib/evil/setup/generator.rb', line 33

def generate!
  puts "Generating Evil application..."
  create_dir_tree!
  copy_assets!
  set_cookie_secret!
  puts "Initializing database..."
  create_database!
end


65
66
67
68
69
# File 'lib/evil/setup/generator.rb', line 65

def set_cookie_secret!
  rackup = File.read(File.join(@path, 'config.ru'))
  rackup.gsub!(/__SECRET__/, Digest::SHA1.hexdigest("__EVIL__#{Time.now.to_s}__#{rand(999999)}"))
  File.open(File.join(@path, 'config.ru'), 'w') { |f| f.write(rackup) }
end