class Rubynew::Project
Public Class Methods
new(name)
click to toggle source
# File lib/rubynew/project.rb, line 7 def initialize(name) @name = name # ripped off from Bundler @underscored_name = @name.tr("-", "_") @constant_name = @name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase } end
Public Instance Methods
create()
click to toggle source
# File lib/rubynew/project.rb, line 14 def create template_path = File.expand_path("../../../template", __FILE__) # copy the template FileUtils.cp_r template_path, @name # rename the files FileUtils.mv File.join(@name, "lib", "app"), File.join(@name, "lib", @underscored_name) FileUtils.mv File.join(@name, "lib", "app.rb"), File.join(@name, "lib", "#{@underscored_name}.rb") FileUtils.mv File.join(@name, "test", "app_test.rb"), File.join(@name, "test", "#{@underscored_name}_test.rb") FileUtils.mv File.join(@name, "bin", "app"), File.join(@name, "bin", @underscored_name) # apply templates [ File.join(@name, "bin", @underscored_name), File.join(@name, "lib", "#{@underscored_name}.rb"), File.join(@name, "lib", @underscored_name, "version.rb"), File.join(@name, "test", "#{@underscored_name}_test.rb"), File.join(@name, "README.md") ].each { |file| render_template_to_file file, binding } end
Private Instance Methods
render_template_to_file(template, context)
click to toggle source
# File lib/rubynew/project.rb, line 39 def render_template_to_file(template, context) t = File.read(template) File.open(template, "w") do |f| f << ERB.new(t, nil, "-").result(context) end end