Rake鍜?/strong>Make鍙?/strong>Ant
Rake鐨勬剰鎬濇槸Ruby Make錛屼竴涓敤ruby寮鍙戠殑浠g爜鏋勫緩宸ュ叿銆?/font>Rake鐨勮嫳鏂囨剰鎬濇槸鑰欏瓙錛屼竴縐嶅緢鏈村疄鐨勫姵鍔ㄥ伐鍏楓傜湡鐨勬槸寰堣創鍒囷紝Rake姝f槸涓涓姛鑳藉己澶с佸嫟鍕ゆ伋鎭崇殑鍔沖姩宸ュ叿銆?/font>
Rake浼氱粡甯歌窡C/C++棰嗗煙鐨?/font>make鍜?/font>Java涓栫晫鐨?/font>Ant榪涜瀵圭収錛屼簨瀹炰笂錛屽畠浠湁寰堝鐩鎬技鐨勫湴鏂廣傛垜浠厛鏉ョ湅涓涓?/font>make鍜?/font>ant鐨勫巻鍙層?/font>
make鐨勫嚭鐜版槸涓轟簡瑙e喅鎵歸噺緙栬瘧鐨勯棶棰樸傚浜庝竴涓皬鍨嬬殑欏圭洰鏉ヨ錛岀敤涓涓剼鏈枃浠舵垨鑰呮壒澶勭悊鍛戒護鏉ヨ繘琛屾壒閲忕紪璇戝氨宸茬粡瓚沖濂姐備絾鏄浜庡ぇ鍨嬬殑欏圭洰鏉ヨ錛屼粎浠呬負浜嗗皯鏁板嚑涓枃浠剁殑鏀瑰彉灝卞叏閮ㄩ噸鏂拌繘琛屼竴嬈$紪璇戞棤鐤戞槸鑰楁椂涓斾笉蹇呰鐨勩傝屼笖錛屽湪澶у瀷鐨勯」鐩腑錛屽線寰浼氭湁寰堝鏉傜殑渚濊禆鍏崇郴銆?/font>
Make鐨勫嚭鐜板氨鏄負浜嗚В鍐寵繖涓や釜闂錛?/font>make鏈変袱涓紭鐐癸細
Make浜嗚В鑷笂嬈?/font>Make榪愯浠ユ潵鍝簺鏂囦歡鍙戠敓浜嗗彉鍖栵紝瀹冧細浠呬粎緙栬瘧閭d簺鍙戠敓鍙樺寲鐨勬枃浠躲?/font>
Make浼氳窡韙枃浠朵箣闂寸殑渚濊禆鎬э紝濡傛灉鏂囦歡A渚濊禆浜庢枃浠?/font>B錛岄偅涔堝鏋滀袱鑰呴兘娌℃湁緙栬瘧鏃訛紝Make浼氶鍏堢紪璇戞枃浠?/font>B銆?/font>
Ant綆楁槸涓涓?/font>Java涓栫晫鐨?/font>make錛屽畠瑕佹瘮make騫磋交璁稿錛堟兂鎯?/font>make鏄嚭鐜板湪1972騫村惂錛夛紝瀹冮櫎浜嗘敮鎸佹壒閲忕紪璇戜箣澶栵紝榪樻敮鎸佸崟鍏冩祴璇曘?/font>JavaDoc絳変換鍔°傚洜姝わ紝Ant鍦?/font>Java涓栫晫涓瘮Make鏇村姞嫻佽銆?/font>
浣嗘槸錛屼負浠涔?/strong>Ruby闇瑕?/strong>Rake錛?/strong>
Ruby浠g爜涓嶉渶瑕佺紪璇戯紝涓轟粈涔堥渶瑕?/font>Rake錛熷叾瀹烇紝涓庡叾璇?/font>Rake鏄竴涓唬鐮佹瀯寤哄伐鍏鳳紝涓嶅璇?/font>Rake鏄竴涓換鍔$鐞嗗伐鍏鳳紝閫氳繃Rake鎴戜滑鍙互寰楀埌涓や釜濂藉錛?/font>
浠ヤ換鍔$殑鏂瑰紡鍒涘緩鍜岃繍琛岃剼鏈?/font>
褰撶劧錛屼綘鍙互鐢ㄨ剼鏈潵鍒涘緩姣忎竴涓綘甯屾湜鑷姩榪愯鐨勪換鍔°備絾鏄紝瀵逛簬澶у瀷鐨勫簲鐢ㄦ潵璇達紝浣犲嚑涔庢繪槸闇瑕佷負鏁版嵁搴撹縼縐伙紙姣斿Rails涓?/font>db:migrate浠誨姟錛夈佹竻絀虹紦瀛樸佹垨鑰呬唬鐮佺淮鎶ょ瓑絳夌紪鍐欒剼鏈傚浜庢瘡涓欏逛換鍔★紝浣犲彲鑳介兘闇瑕佸啓鑻ュ共鑴氭湰錛岃繖浼氳浣犵殑綆$悊鍙樺緱澶嶆潅銆傞偅涔堬紝鎶婂畠浠敤浠誨姟鐨勬柟寮忔暣鐞嗗埌涓璧鳳紝浼氳綆$悊鍙樺緱杞繪澗寰堝銆?/font>
榪借釜鍜岀鐞嗕換鍔′箣闂寸殑渚濊禆
Rake榪樻彁渚涗簡杞繪澗綆$悊浠誨姟涔嬮棿渚濊禆鐨勬柟寮忋傛瘮濡傦紝“migrate”浠誨姟鍜?#8220;schema錛?/font>dump”浠誨姟閮戒緷璧栦簬 “connect_to_database”浠誨姟錛岄偅涔堝湪“migrate”浠誨姟璋冪敤涔嬪墠錛?#8220;connect_to_database”浠誨姟閮戒細琚墽琛屻?/font>
鍦ㄥ摢閲屽彲浠ヨ幏寰?/strong>Rake錛?/strong>
Rake鐨勪富欏墊槸鍦?/font>http://rake.rubyforge.org/錛屽湪榪欓噷浣犲彲浠ヨ幏寰?/font>Rake鐨勭畝鍗曚粙緇嶏紝API浠ュ強涓浜涙湁鐢ㄦ枃妗g殑閾炬帴銆傚彲浠ュ湪http://rubyforge.org/frs/?group_id=50鑾峰緱鏈鏂扮増鐨?/font>Rake錛屽湪浣滆呭啓浣滄椂錛屾渶鏂扮増鏈槸0.7.3銆?/font>
Rake鐨勮剼鏈浉褰撶畝鍗曪紝涓嬮潰鐢ㄤ竴涓緥瀛愯繘琛岃鏄庛傚亣璁句綘鏄竴涓嫟鍔崇殑瀹跺涵鍨嬬▼搴忓憳錛屽湪鍛ㄦ湯浣犳墦綆椾負浣犵殑瀹朵漢鍋氫竴浜涜礎鐚傛墍浠ヤ綘涓鴻嚜宸卞埗瀹氫簡涓変釜浠誨姟錛氫拱鑿溿佸仛楗拰媧楄。鏈嶃傛墦寮浣犵殑鏂囨湰緙栬緫鍣紝鍒涘緩涓涓悕鍙?/font>rakefile鐨勬枃浠訛紙Rake浼氬湪褰撳墠璺緞涓嬪鎵懼悕鍙?/font>Rakefile銆?/font>rakefile銆?/font>RakeFile.rb鍜?/font>rakefile.rb鐨?/font>rake鏂囦歡錛夛紝騫惰緭鍏ュ涓嬪唴瀹癸細
desc "浠誨姟1 -- 涔拌彍"
task :purchaseVegetables do
puts "鍒版矁灝旂帥鍘諱拱鑿溿?/font>"
end
desc "浠誨姟2 -- 鍋氶キ"
task :cook do
puts "鍋氫竴欏塊鍠峰柗鐨勯キ鑿溿?/font>"
end
desc "浠誨姟3 -- 媧楄。鏈?/font>"
task :laundry do
puts "鎶婃墍鏈夎。鏈嶆墧榪涙礂琛f満銆?/font>"
end
鎵撳紑鍛戒護琛屽伐鍏鳳紝榪涘叆榪欎釜鏂囦歡鎵鍦ㄧ洰褰曪紝鐒跺悗榪愯涓嬮潰鐨勫懡浠わ紝澶ц嚧搴旇綾諱技濡備笅緇撴灉錛?/font>
D:"work"ruby_works"ruby_book>rake purchaseVegetables
(in D:/work/ruby_works/ruby_book)
鍒版矁灝旂帥鍘諱拱鑿溿?/font>
D:"work"ruby_works"ruby_book>rake cook
(in D:/work/ruby_works/ruby_book)
鍋氫竴欏塊鍠峰柗鐨勯キ鑿溿?/font>
D:"work"ruby_works"ruby_book>rake laundry
(in D:/work/ruby_works/ruby_book)
鎶婃墍鏈夎。鏈嶆墧榪涙礂琛f満銆?/font>
鍒嗘瀽
寰堢畝鍗曪紝涔熷緢鏄撹錛屽鍚с傝繖涓枃浠朵竴鍏卞畾涔変簡3涓換鍔★紝desc鏄?/font>Rake瀹氫箟鐨勬柟娉曪紝琛ㄧず瀵逛笅闈㈠畾涔変換鍔$殑鎻忚堪銆傝繖涓弿榪頒細鍦ㄤ嬌鐢?/font>Rake --tasks錛堟垨鑰?/font>Rake -T錛屼負鎳掍漢鍑嗗鐨勫揩鎹鋒柟寮忥級鍛戒護鏃惰緭鍑哄湪灞忓箷涓娿?/font>
D:"work"ruby_works"ruby_book>rake --tasks
(in D:/work/ruby_works/ruby_book)
rake cook # 浠誨姟2 -- 鍋氶キ
rake laundry # 浠誨姟3 -- 媧楄。鏈?/font>
rake purchaseVegetables # 浠誨姟1 -- 涔拌彍
涓嬮潰鐨勮鍙ュ畾涔変簡purchaseVegetables榪欎釜浠誨姟錛?/font>task鏄?/font>Rake鏈閲嶈鐨勬柟娉曘傚畠鐨勬柟娉曞畾涔夋槸錛?/font>task(args, &block)銆備換鍔′綋鏄竴涓?/font>block錛屾湰渚嬩腑鍙槸綆鍗曡緭鍑轟綘鎵瑕佸仛鐨勫伐浣溿傞渶瑕佹敞鎰忕殑鏄唬鐮?/font>
puts "鍒版矁灝旂帥鍘諱拱鑿溿?/font>"
瀹屽叏鏄竴涓櫘閫氱殑Ruby璇彞錛?/font>puts鏄?/font>Ruby涓繘琛岃緭鍑虹殑涓鑸ф柟娉曪紝鍙互鐪嬪嚭錛?/font>Rake浠誨姟鍙互瀹屽叏浣跨敤Ruby鐨勮兘鍔涳紝榪欎嬌寰楀畠闈炲父寮哄ぇ銆?/font>
寰堟樉鐒訛紝鍦ㄦ垜浠畾涔夌殑浠誨姟涓紝鍋氶キ鏄緷璧栦簬涔拌彍鐨勶紙鎴戠浉淇″ぇ澶氭暟紼嬪簭鍛樺湪鍛ㄦ湯鐨勫啺綆遍噷闄や簡鍙箰娌℃湁鍒殑錛夈傞偅涔堬紝鎴戜滑闇瑕佸湪鎴戜滑鐨勪換鍔″畾涔変腑鍔犲叆榪欎釜渚濊禆鍏崇郴錛屼慨鏀瑰悗鐨勬枃浠跺涓嬶細
desc "浠誨姟1 -- 涔拌彍"
task :purchaseVegetables do
puts "鍒版矁灝旂帥鍘諱拱鑿溿?/font>"
end
desc "浠誨姟2 -- 鍋氶キ"
task :cook => :purchaseVegetables do
puts "鍋氫竴欏塊鍠峰柗鐨勯キ鑿溿?/font>"
end
desc "浠誨姟3 -- 媧楄。鏈?/font>"
task :laundry do
puts "鎶婃墍鏈夎。鏈嶆墧榪涙礂琛f満銆?/font>"
end
鍐嶆榪愯鍋氶キ浠誨姟錛屼綘浼氬緱鍒板涓嬬粨鏋滐細
D:"work"ruby_works"ruby_book>rake cook
(in D:/work/ruby_works/ruby_book)
鍒版矁灝旂帥鍘諱拱鑿溿?/font>
鍋氫竴欏塊鍠峰柗鐨勯キ鑿溿?/font>
鏄殑錛屼綘褰撶劧闇瑕佸厛涔拌彍錛岃皝璁╀綘鏄竴涓啺綆辯┖絀哄閲庣殑紼嬪簭鍛樺憿銆?/font>
璺熶換浣曠紪紼嬭璦綾諱技錛屽綋浣犵殑rake鏂囦歡寰堝鏃訛紝褰撲綘鏈夊緢澶氫換鍔$殑鏃跺欙紝浣犻渶瑕佸叧娉ㄥ畠浠殑鍛藉悕鍐茬獊闂錛屽懡鍚嶇┖闂達紙namespace錛夊氨鏄竴涓嚜鐒剁殑瑙e喅鏂規銆備綘鍙互涓轟笂闈㈢殑涓変釜浠誨姟瀹氫箟涓涓彨鍋?/font>home鐨勫懡鍚嶇┖闂淬?/font>
namespace :home do
desc "浠誨姟1 -- 涔拌彍"
task :purchaseVegetables do
puts "鍒版矁灝旂帥鍘諱拱鑿溿?/font>"
end
……
end
鍐嶆榪愯rake --tasks錛屼綘浼氬緱鍒板涓嬬殑緇撴灉錛?/font>
D:"work"ruby_works"ruby_book >rake --tasks
(in D:/work/ruby_works/ruby_book)
rake home:cook # 浠誨姟2 -- 鍋氶キ
rake home:laundry # 浠誨姟3 -- 媧楄。鏈?/font>
rake home:purchaseVegetables # 浠誨姟1 -- 涔拌彍
浣犵幇鍦ㄩ渶瑕佷嬌鐢?/font>rake home:cook鎵嶈兘鍚姩鍋氶キ榪欎釜浠誨姟浜嗐傚綋鐒訛紝浣犲彲浠ュ湪浣犵殑rakefile涓嬌鐢ㄥ涓懡鍚嶇┖闂達紝瀵逛換鍔¤繘琛屽垎綾匯?/font>
褰撲換鍔′紬澶氱殑鏃跺欙紝浣犲緢鍙兘闇瑕佸湪涓涓換鍔′腑璋冪敤鍙﹀涓涓換鍔★紝鍋囪鎴戜滑鎶婁粖澶╂墍鏈夎鍋氱殑宸ヤ綔瀹氫箟涓轟竴涓換鍔★細today銆傚湪榪欎釜浠誨姟涓紝鏈変袱涓換鍔¢渶瑕佽璋冪敤錛屼竴涓槸鍋氶キ錛屼竴涓槸媧楄。鏈嶃傚綋鐒訛紝鐢變簬鍋氶キ渚濊禆浜庝拱鑿滐紝鎴戜滑榪樻槸闇瑕佷拱鑿滅殑錛堣繖涓姝ユ槸閫冧笉榪囧幓鐨勶紝鍛靛懙錛夈傚湪鏂囦歡鐨勯《閮ㄥ畾涔変竴涓?/font>today鐨勪換鍔★細
desc "浠婂ぉ鐨勪換鍔?/font>"
task :today do
Rake::Task["home:cook"].invoke
Rake::Task["home:laundry"].invoke
end
namespace :home do
……
end
鍙互鐪嬪嚭錛岃皟鐢ㄥ叾瀹冧換鍔$殑鏂瑰紡寰堢畝鍗曪紝鍙渶瑕佽皟鐢?/font>Rake::Task["task_name"].invoke 鏂規硶灝卞彲浠ヤ簡銆傚湪鍛戒護琛屼腑鍚姩rake today錛屽彲浠ュ緱鍒幫細
D:"work"ruby_works"ruby_book >rake today
(in D:/work/ruby_works/ruby_book)
鍒版矁灝旂帥鍘諱拱鑿溿?/font>
鍋氫竴欏塊鍠峰柗鐨勯キ鑿溿?/font>
鎶婃墍鏈夎。鏈嶆墧榪涙礂琛f満銆?/font>
鍙互涓?/font>Rake澧炲姞涓涓粯璁や換鍔★紝榪欐牱鍙互綆鍗曞湴鐢?/font>Rake鍛戒護鏉ヨЕ鍙戣繖涓粯璁や換鍔★紝鍦ㄤ笂闈㈢殑rakefile涓紝鎴戜滑鍙互鐢ㄥ涓嬫柟寮忔妸“today”浠誨姟浣滀負榛樿浠誨姟銆?/font>
task :default => [:today]
鐒跺悗璋冪敤鐩存帴鍦ㄥ懡浠よ涓皟鐢?/font>rake錛屽彲浠ュ緱鍒拌窡璋冪敤rake today鍚屾牱鐨勮緭鍑虹粨鏋溿?/font>
榪欏氨鏄垜浠畝鍗曠殑涓涓?/font>Rake浠誨姟瀹氫箟錛屼笅闈㈡槸瀹屾暣鐨勪慨鏀瑰悗鐨?/font>rakefile錛?/font>
task :default => [:today]
desc "浠婂ぉ鐨勪換鍔?/font>"
task :today do
Rake::Task["home:cook"].invoke
Rake::Task["home:laundry"].invoke
end
namespace :home do
desc "浠誨姟1 -- 涔拌彍"
task :purchaseVegetables do
puts "鍒版矁灝旂帥鍘諱拱鑿溿?/font>"
end
desc "浠誨姟2 -- 鍋氶キ"
task :cook => :purchaseVegetables do
puts "鍋氫竴欏塊鍠峰柗鐨勯キ鑿溿?/font>"
end
desc "浠誨姟3 -- 媧楄。鏈?/font>"
task :laundry do
puts "鎶婃墍鏈夎。鏈嶆墧榪涙礂琛f満銆?/font>"
end
end
Rails棰勫畾涔変簡澶ч噺鐨?/font>Rake浠誨姟錛屽湪Rails搴旂敤鐨勫紑鍙戣繃紼嬩腑錛屼綘鎯沖繀宸茬粡鍦ㄥぇ閲忎嬌鐢ㄥ畠浠簡銆傚湪Rails涓紝鎵鏈夌殑Rake浠誨姟閮芥斁鍦?/font>rails鐩綍鐨?/font>lib/tasks鐩綍涓嬶紙鍦ㄤ綔鑰呯殑鐜涓嬫槸c:"ruby"lib"ruby"gems"1.8"gems"rails-1.1.4"lib"tasks"錛夛紝鎵鏈夌殑rake浠誨姟閮戒互.rake浣滀負鍚庣紑鍚嶏紝榪欎簺浠?/font>.rake緇撳熬鐨勬枃浠朵細琚嚜鍔ㄥ姞杞藉埌浣犵殑鐜涓備綘鍙互鍒頒竴涓凡鏈夌殑Rails宸ョ▼鏍圭洰褰曚笅閿叆rake --tasks錛屽彲浠ョ湅鍒板緢澶氱殑rake浠誨姟宸茬粡涓轟綘鏁磋寰呭彂浜嗐?/font>
鍦?/font>Rails涓紝鏈甯鎬嬌鐢ㄧ殑Rake浠誨姟涔嬩竴鏄繘琛屾暟鎹簱鐨勮縼縐伙紙migration錛夈傛暟鎹簱榪佺Щ紼嬪簭鍏佽浣犱嬌鐢?/font>Ruby鑴氭湰鏉ュ畾涔夋暟鎹簱妯″紡錛岃?/font>db:migrate灝辨槸榪涜榪欎釜宸ヤ綔鐨?/font>rake浠誨姟銆備笅闈㈡垜浠潵鍒嗘瀽榪欎釜rake浠誨姟銆?/font>
db:migrate浠誨姟
db:migrate浠誨姟瀛樻斁鍦?/font>lib/tasks/databases.rake鏂囦歡涓傝繖涓枃浠朵腑瀹氫箟浜嗘墍鏈変笌鏁版嵁搴撴搷浣滅浉鍏崇殑浠誨姟錛屾垜浠粎浠呮娊鍑?/font>db:migrate鐨勫畾涔夛細
namespace :db do
desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
task :migrate => :environment do
ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
end
……
end
鍒嗘瀽
棣栧厛鏄懡鍚嶇┖闂寸殑澹版槑錛?/font>migrate浠誨姟鐨勫懡鍚嶇┖闂存槸db銆傝繖涔熷氨鏄垜浠敤db:migrate鏉ュ紩鐢ㄥ畠鐨勫師鍥犮?/font>
涓嬮潰鏄竴涓弿榪幫紝璇存槑璇ヤ換鍔$殑鍔熻兘鏄妸瀹氫箟鍦?/font>db/migrate鐩綍涓嬶紙鐩稿浜庝綘鐨?/font>Rails搴旂敤紼嬪簭鐨勬牴鐩綍錛夌殑榪佺Щ鑴氭湰榪佺Щ鍒版暟鎹簱涓紝濡傛灉涓嶆寚瀹?/font>VERSION鐨勮瘽錛岄粯璁ゆ槸鏈鏂扮増鏈紝鍚﹀垯鍙互鎭㈠鍒頒竴涓寚瀹氱殑鐗堟湰銆?/font>
鎺ョ潃鏄換鍔$殑瀹氫箟錛岃浠誨姟渚濊禆浜?/font>enviroment浠誨姟錛岃繖涓換鍔″湪misc.rake涓畾涔夛紝鐢ㄦ潵鍔犺澆Rails鐨勭幆澧冿紝瀹冪殑瀹氫箟鐩稿綋綆鍗曪細
task :environment do
require(File.join(RAILS_ROOT, 'config', 'environment'))
end
鐢ㄦ潵鍔犺澆config/environment.rb鏂囦歡錛岃鏂囦歡浼氬姞杞?/font>Rails宸ヤ綔鎵闇瑕佸姞杞界殑鐜銆傜敱浜庡姞杞戒簡榪欎釜鐜錛屾墍浠?/font>ActiveRecord瀵硅薄鐜板湪鍙互浣跨敤錛屼笅闈㈠氨鏄皟鐢?/font>ActiveRecord::Migrator.migrate鏂規硶瀵規瘡涓?/font>db/migrate/涓嬬殑鑴氭湰鏂囦歡榪涜榪佺Щ銆?
鏈鍚庝細璋冪敤db:schema:dump浠誨姟錛岃浠誨姟鐨勪富瑕佷綔鐢ㄦ槸浜х敓db/schema.rb鏂囦歡銆傝鏂囦歡鐢ㄦ潵璁板綍涓嶅悓鐗堟湰鐨勬暟鎹簱妯″紡銆傝繖涓換鍔$殑瀹氫箟灝卞湪db:migrate浠誨姟涓嬮潰涓嶈繙鐨勫湴鏂癸紝鏈夊叴瓚g殑璇昏呭彲浠ヨ嚜琛岃繘琛屽垎鏋愩?/font>