Class: CreateTemplates
- Inherits:
-
Thor::Group
- Object
- Thor::Group
- CreateTemplates
- Includes:
- Thor::Actions
- Defined in:
- lib/generators/likelion/create_templates.rb
Constant Summary collapse
- @@path =
""
- @@converter =
for aliasing
{ "검색" => "160525", "ajax" => "160502" }
Class Method Summary collapse
Instance Method Summary collapse
- #add_attributes(line) ⇒ Object
- #add_bootstraps ⇒ Object
- #add_initializer ⇒ Object
- #add_seeds ⇒ Object
- #bootstrap_cdn ⇒ Object
- #comment_application_controller ⇒ Object
- #copy_file(src, dest) ⇒ Object
- #create_views ⇒ Object
-
#print_description ⇒ Object
설명 출력하기.
- #process ⇒ Object
- #run_commands ⇒ Object
- #set_database(model_name) ⇒ Object
- #set_path ⇒ Object
- #set_routes ⇒ Object
Class Method Details
.source_root ⇒ Object
19 20 21 |
# File 'lib/generators/likelion/create_templates.rb', line 19 def self.source_root File.dirname(__FILE__) end |
Instance Method Details
#add_attributes(line) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/generators/likelion/create_templates.rb', line 65 def add_attributes(line) #TODO : Devise는...? line = line.split if line[2].eql?"controller" run(copy_file("#{@@path}/#{line[3]}_controller.rb", \ "app/controllers/#{line[3]}_controller.rb")) elsif line[2].eql?"model" if File.exist?("#{@@path}/#{line[3]}.rb") run(copy_file("#{@@path}/#{line[3]}.rb", \ "app/models/#{line[3]}.rb")) end #데이터베이스 설정 set_database(line[3].pluralize) end end |
#add_bootstraps ⇒ Object
96 97 98 99 100 |
# File 'lib/generators/likelion/create_templates.rb', line 96 def add_bootstraps #Bootstrap CDN 추가 # Thor::Actions::insert_into_file insert_into_file "app/views/layouts/application.html.erb", bootstrap_cdn, :before => "</head>\n" end |
#add_initializer ⇒ Object
135 136 137 138 139 140 141 142 143 144 |
# File 'lib/generators/likelion/create_templates.rb', line 135 def add_initializer initializers = Dir["#{@@path}/initializer*"].select { |f| f =~ /initializer.*.rb$/ } if initializers.empty? return end initializers.each do |file| file_name = file.split('.',2)[1] run(copy_file(file, "config/initializers/#{file_name}")) end end |
#add_seeds ⇒ Object
145 146 147 148 149 150 151 |
# File 'lib/generators/likelion/create_templates.rb', line 145 def add_seeds #seeds.rb 내용을 복사 unless File.exist?("#{@@path}/seeds.rb") return end run(copy_file("#{@@path}/seeds.rb", "config/seeds.rb")) end |
#bootstrap_cdn ⇒ Object
102 103 104 105 106 107 108 109 110 111 |
# File 'lib/generators/likelion/create_templates.rb', line 102 def bootstrap_cdn '<!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> <!-- Optional theme --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>' end |
#comment_application_controller ⇒ Object
90 91 92 93 94 |
# File 'lib/generators/likelion/create_templates.rb', line 90 def comment_application_controller # appication_controller.rb에 protect_from_forgery 주석 처리 # Thor::Actions::comment_lines comment_lines 'app/controllers/application_controller.rb', /protect_from_forgery with: :exception/ end |
#copy_file(src, dest) ⇒ Object
62 63 64 |
# File 'lib/generators/likelion/create_templates.rb', line 62 def copy_file(src, dest) "cp -rf #{src} #{dest}" end |
#create_views ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/generators/likelion/create_templates.rb', line 121 def create_views unless File.exist?("#{@@path}/views.txt") return end File.open("#{@@path}/views.txt","r") do |infile| while(filename = infile.gets) filename.rstrip! controller, view = filename.split('.',2) run(copy_file("#{@@path}/#{filename}", \ "app/views/#{controller}/#{view}")) end end end |
#print_description ⇒ Object
설명 출력하기
154 155 156 157 158 159 160 |
# File 'lib/generators/likelion/create_templates.rb', line 154 def print_description puts "================================" if File.exist?("#{@@path}/readme") puts File.read("#{@@path}/readme") end puts "================================" end |
#process ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/generators/likelion/create_templates.rb', line 23 def process source_paths << @@path #키워드를 날짜로 변환 set_path #모델, 컨트롤러 등 생성 run_commands #view 생성 create_views #initializer 파일 추가 add_initializer #application_controller.rb 주석 처리 comment_application_controller #bootstrap 추가 add_bootstraps #routes.rb 설정 set_routes #seed 추가 add_seeds #완료 후 설명 출력 print_description end |
#run_commands ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/generators/likelion/create_templates.rb', line 46 def run_commands File.open("#{@@path}/command.txt","r") do |infile| #command.txt 내에 있는 커맨드 읽기 while( line = infile.gets ) #주석은 통과 if line[0] == '#' next end #Command 실행. Thor::Actions::run(cmd) run (line) #Model과 Controller인 경우 내용(method, attributes 등) 추가 add_attributes(line) end end end |
#set_database(model_name) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/generators/likelion/create_templates.rb', line 81 def set_database(model_name) if not File.exist?("#{@@path}/create_#{model_name}.rb") return end db_file = Dir['db/migrate/*'].select { |f| f =~ /#{model_name}.rb$/ } run(copy_file("#{@@path}/create_#{model_name}.rb",db_file[0])) end |
#set_path ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/generators/likelion/create_templates.rb', line 11 def set_path keyword = ARGV[0] if @@converter.has_key?(keyword.rstrip.downcase) keyword = @@converter[keyword] end @@path = "#{File.dirname(__FILE__)}/templates/#{keyword}" end |
#set_routes ⇒ Object
113 114 115 116 117 118 119 |
# File 'lib/generators/likelion/create_templates.rb', line 113 def set_routes #routes.rb 내용을 복사 unless File.exist?("#{@@path}/routes.rb") return end run(copy_file("#{@@path}/routes.rb", "config/routes.rb")) end |