rakeで簡単なプロジェクト生成

書き直し

require 'erb'
require 'drb/drb'
require 'fileutils'

task :default => [:project]

desc 'create project [rake project project_name=<project_name> class_name=<first_class_name> ]'
task :project do
  FileUtils.mkdir(dir_name)
  write_target
  write_test
end

def write_target
  open("./#{dir_name}/#{target_file_name}.rb", "w") { |writer|
    writer.puts ERB.new(target_template).result(binding)
  }
end

def write_test
  open("./#{dir_name}/#{target_file_name}_test.rb", "w") { |writer|
    writer.puts ERB.new(test_template).result(binding)
  }
end

def dir_name
  ENV["project_name"]
end

def target_class_name
  ENV["class_name"]
end

def target_file_name
  target_class_name.gsub(/[A-Z]/){|char| "_" + char}.sub(/_/, "").downcase
end

def target_template 
<<EOS
class <%= target_class_name %>
end
EOS
end

def test_template
<<EOS
require 'test/unit'
require '<%= target_file_name%>'

class <%= target_class_name %>Test < Test::Unit::TestCase
  def setup
  end
  def test_
  end
end
EOS
end
desc 'create project [rake project project_name=<project_name> class_name=<first_class_name> ]'
task :project do
  dir_name = ENV["project_name"]
  target_class_name=ENV["class_name"]
  target_file_name = target_class_name.gsub(/[A-Z]/){|char| "_" + char}.sub(/_/, "").downcase

  FileUtils.mkdir(dir_name)
  # ターゲットクラスの作成
  open("./#{dir_name}/#{target_file_name}.rb", "w") { |writer|
    writer.puts ERB.new(target_template).result(binding)
  }

  # テストクラスの作成
  open("./#{dir_name}/#{target_file_name}_test.rb", "w") { |writer|
    writer.puts ERB.new(test_template).result(binding)
  }
end

def target_template 
<<EOS
class <%= target_class_name %>
end
EOS
end

def test_template
<<EOS
require 'test/unit'
require '<%= target_file_name%>'

class <%= target_class_name %>Test < Test::Unit::TestCase
  def setup
  end
  def test_
  end
end
EOS
end