æµè¯é©±å¨ Rails å¼å?
è´¡ç®è
ï¼Brian Leonardï¼ç»´æ¤è
ï¼Beth Stearns
2007 å¹´ 12 æ [修订å?·ï¼V6.0-1]
æ¬æä»ç»? NetBeans IDE ä¸è¾
婿µè¯ Ruby å Rails 代ç ?çä¸äºç¹æ§ãNetBeans æ??ä¾äºå¾å¤æµè¯éä»¶æ¹ä¾¿æ¨å¯¹åºç¨ç¨åº?è¿è¡å?å
æµè¯ã
ç®å½
|
|
 |
Ruby å Ruby on Rails åºç¨ç¨åº?å¼å?è
å?¯ä»¥è°ç¨è®¸å¤æµè¯ç¹æ§æ?¥è¾
婿µè¯åè°è¯é¡¹ç®ãæ¬ææ¶µçäºå½å?å?¯ç¨çç¹æ§ã
æ¬æç¨éè¦?使ç¨å¦ä¸ææ¯ï¼
NetBeans IDE æ¯æ?å¾å¤ Ruby æµè¯æ¡æ¶åç¹æ§ãæä»¬å°å?æ¨å±ç¤ºé½æ¯æ?åªäºå
容ï¼å¹¶æ??示æ¨å¦ä½ä½¿ç¨è¿äºæµè¯ç¹æ§ãæä»¬å?æ ·å°ä»ç»?ä¸äºæ¹ä¾¿æ¨è¿½è¸ªé误ã?以å?卿º?代ç ?åæµè¯ç¨ä¾ä¹é´ç¸äºåæ?¢ç NetBeans ç¬æç¹æ§ã
卿们æ¶å? Ruby ç¸å
³çæµè¯ç¹æ§ä¹å?ï¼æä»¬å
ç®è¦?ä»ç»?ä¸ä¸å?å
æµè¯å?å
¶åºæ¬æ¦å¿µã 彿们è°å?å?å
æµè¯æ¶ï¼æä»¬ææçæ¯é£äºå¼å?è
ç¨ä»¥éªè¯?åºç¨ç¨åº?æº?代ç ?ä¸çç¬ç«å?å
è½å?¦æ£å¸¸å·¥ä½ççæµè¯ãä¸ä¸ªå?å
被å®ä¹ä¸ºåºç¨ç¨åº?ä¸è½è¢«æµè¯çæå°?é¨åãå æ¤ï¼å¯¹äºé?¢å?对象ç¨åº?设计èè¨ï¼ä¸ä¸ªå?å
å°±æ¯ä¸ä¸ªç±»ï¼å?¯è½æ¯ä¸ä¸ªåºç±»ã?è¶
ç±»ã?æ½è±¡ç±»æè
æ´¾çç±»ï¼å?ç±»ï¼ãèå?¦ä¸æ¹é?¢ï¼å¨é?¢å?è¿ç¨ç¨åº?设计ä¸ï¼ä¸ä¸ªå?å
åå
¸åå°ä¸ºä¸ä¸ªç¬ç«çç¨åº?ã?彿°æè
è¿ç¨ã注æ?ä¸?è¦?å°å?å
忍¡å?æ··æ·ï¼æ¨¡å?æ¯åºç¨ç¨åº?ä¸ç¸å¯¹è¾å¤§çé¨åï¼é常ç±å?å
ææ?ã
å?å
æµè¯é常éè¦?ä¸ç»ç¸äºç¬ç«çæµè¯ç¨ä¾ãæµè¯ç¨ä¾å?¯è½ä½¿ç¨æ¨¡æç对象æ?¥è¾
婿µè¯ï¼ç¹å«æ¯ä½¿ç¨çå®å¯¹è±¡é?常å°é¾ã?严é?æ¶èæ¶é´æè
é¾ä»¥çæ?çæ¶åãæ¨¡æå¯¹è±¡è½è¢«ç¨äºæµè¯å?¦å¤ä¸ä¸ªå¯¹è±¡çè¡ä¸ºæ¯å 为å®ä»¥ä¸ç§?å?æ§æ¹å¼?模æçå®å¯¹è±¡çè¡ä¸ºã模æå¯¹è±¡çä¸ä¸ªå¾å¥½çä¾å?æ¯å¨æè½¦å®éªä¸ä½¿ç¨å?人代æ¿ç人ã
æµè¯è£
å
·ï¼harnessï¼ï¼æè
èªå¨æµè¯æ¡æ¶ï¼å¯¹äºå?å
æµè¯å?æ ·é?è¦?ãæµè¯è£
å
·ï¼harnessï¼æ¯ä¸ç»è½¯ä»¶ä»£ç ?åæµè¯æ°æ?®çéå?ï¼è½å°ç¨åº?å?å
å¨å¤ç§?æ?¡ä»¶ä¸è¿?è¡ï¼å¹¶å?æ¶çè§å?å
è¡ä¸ºä»¥å?è¾åºãç±äºå?¯è¢«é?å¤?使ç¨ï¼æµè¯è£
å
·è½å¤èªå¨åå?å
æµè¯ã
Ruby 带æä¸ä¸ªå
ç½®çæµè¯æ¡æ¶ï¼ç§°ä¹ä¸º Test::Unitãç±äº NetBeans IDE ç´æ¥æ¯æ? Test::Unitï¼æ
æ¨ä»âæ°å»ºâ?è?å?ä¸å°±è½å建æ°çå?å
æµè¯ãå¨â项ç®â?çªå?£ä¸ï¼å?³é®ç¹å»è¯¥ Ruby 项ç®ï¼éæ©âæ°å»ºâ?->âRuby å?å
æµè¯â?ã
å¾ 1ï¼å建ä¸ä¸ª Ruby Test::Unit
âæ°å»º Ruby å?å
æµè¯â?对è¯?æ¡ä¼æ??示æ¨è¯¥å?å
æµè¯æä»¶çç¸å
³ä¿¡æ?¯ï¼å
æ¬è¦?è¿?è¡æµè¯çç±»ï¼æµè¯æä»¶çå??ç§°ï¼å
¶æ¨¡å?ï¼ä»¥å?å
¶å¨é¡¹ç®ä¸ç模æ?¿ç®å½ä½?ç½®ãç¹å»â宿?â?å?ï¼IDE ä¼å建å?å
æµè¯çéª¨æ¶æä»¶ï¼æ¨å?³å?¯å?å
¶ä¸æ·»å æ¨ç¹å®çæµè¯ä»£ç ?ãIDE ä¼å°æ¤æä»¶åæ¾å¨é¡¹ç®ç¹å®çç®å½ä½?ç½®ä¸ã
æè®¸å¤æ¹æ³æ?¥è¿è¡æµè¯æè
è¿?è¡å?å
æµè¯ã大夿°æ
å½¢ä¸ï¼æ¨è¦?使ç¨ç¼è¾å¨çªå?£ä¸ä¸æè?å?ä¸çâè¿?è¡æä»¶â?æè
â æµè¯æä»¶â?éé¡¹ï¼æ¨ä¹å?¯ä»¥å¨â项ç®â?çªå?£ä¸çæä»¶è°ç¨âè¿?è¡â?->âè¿?è¡æä»¶â?ï¼ã
âæµè¯æä»¶â?ï¼Ctrl+F6ï¼é项ï¼å¨ç¼è¾å¨ä¸ä¸æè?å?åâè¿?è¡â?è?å?ä¸ï¼ï¼æ¯è¿?è¡æµè¯æä»¶çä¸ç§?æ´å¥½çéæ©ã æ¨å?¯ä»¥ä»æµè¯æä»¶æ¬èº«è¿?è¡âæµè¯æä»¶â?ï¼æè
仿³è¦?æµè¯çç±»è¿?è¡âæµè¯æä»¶â?ãâè¿?è¡æä»¶â?é项ï¼ä¹å¨ç¼è¾å¨ä¸ä¸æè?å?åâè¿?è¡â?è?å?ä¸ï¼ï¼è¦?æ±æ§è¡å¿
é¡»å¨ä¸ºéè¦?æµè¯çç±»æç¼åçæµè¯æä»¶å¤ãâæµè¯æä»¶â?é项çä¼å¿æ¯ï¼æ¨å?¯ä»¥æéæµè¯çæä»¶å¤å?³å?¯è¿?è¡ï¼èæ éä½?äºå
¶æå¯¹åºçæµè¯æä»¶å¤ã
为äºè¯´æä½¿ç¨âæµè¯æä»¶â?é项ç好å¤ï¼æä»¬å?è®¾æ¨æ£å¤ç?ç¨äº Rails æ§å¶å¨çå?å
æµè¯ã彿¨ä½?äºæ§å¶å¨æµè¯æä»¶å¤æ¶ï¼è¿?è¡âæµè¯æä»¶â?é项ï¼ä¼è¿?è¡æ¤æµè¯æä»¶ä½ä¸ºæµè¯ãç¶èï¼å?³ä½¿æ¯ç¼è¾æ§å¶å¨ç±»æ¬èº«æ¶ä¹è½å?æ ·æ¹ä¾¿ã æ¯å¦ï¼æ¨æ£å¨ç¼åæ§å¶å¨ç±»çè¿ç¨ä¸æ³è¦?对å
¶æµè¯ï¼æ¨ä»
ä»
éè¦?æ§è¡âæµè¯æä»¶â?éé¡¹ï¼æä¸Ctrl+F6ï¼ï¼å°±è½å¤è¿?è¡ä¸æ¨æ¤å»ç¼è¾çç±»æå¯¹åºçæµè¯æä»¶ãè¥æ¯æ¨å¯¹è¯¥æ§å¶å¨ç±»ä½¿ç¨âè¿?è¡æä»¶â?é项ï¼IDE åä¼å¨æµ?è§å¨ä¸æå¼è¯¥æ§å¶å¨ç URLãå æ¤ï¼è®°ä½?âè¿?è¡æä»¶â?éé¡¹ç¨æ?¥å¨æµ?è§å¨ä¸è¿?è¡åºç¨ç¨åº?çä¸é¨åï¼èâæµè¯æä»¶â?é项åè¿?è¡ä¸åºç¨ç¨åº?该é¨åç¸å¯¹åºçæµè¯ã
âæµè¯æä»¶â?åâè¿?è¡æä»¶â?ä¹é´è¿æä¸ä¸ªå¾é?è¦?çåºå«ãå½å¯¹ä¸ä¸ªæµè¯æä»¶åºç¨âæµè¯æä»¶â?é项æ¶ï¼ä¼è¿?è¡è¯¥æä»¶ä½ä¸ºæµè¯ãè¿?è¡ä¸ä¸ªæä»¶ä½ä¸ºæµè¯ä¼åç¥ IDE å°æ§è¡ä»£ç ?è§ä¸ºæµè¯ï¼å?æ¶çè§è¾åºä¸ç失æä¿¡æ?¯ãå½å?çæ¬ä¸ï¼è¥ IDE 䏿¦å?ç°ä»»ä½å¤±æä¿¡æ?¯ï¼åä¼åå»ºä¸æ?¡çº¢è²è¦åä¿¡æ?¯å¨ç¼è¾å¨çªå?£åºé¨ï¼ç±»ä¼¼äºâèªå¨æµè¯â?ä¸ççº¢è²æ¶æ?¯ã
âè¿?è¡é¡¹ç®â?åâæµè¯é¡¹ç®â?é项乿å?æ ·çå·®å¼ãâæµè¯é¡¹ç®â?ï¼é¡¹ç®ä¸ä¸æè?å?ä¸çâæµè¯â?é项ï¼ï¼ä¼è¿?è¡é¡¹ç®ä¸çæææµè¯ãï¼å½å?çæ¬ä¸ï¼è¿?è¡é¡¹ç®çæææµè¯ä»
对 Rails é¡¹ç®ææãï¼å¯¹ä¸ä¸ªé¡¹ç®æ§è¡âè¿?è¡â?é项ï¼å®é
ä¸ä¼å¨æµ?è§å¨ä¸è¿?è¡è¯¥é¡¹ç®ã
å¾ 3ï¼æµè¯å?å
æµè¯æä»¶

åºé¨çâè¾åºâ?çªå?£ä¼æ¾ç¤ºæ§è¡å?å
æµè¯æ¶äº§ççè¾åºãç±äºæµè¯è¾åºæ¯è¢«è¶
é¾çï¼æ
æ¨å?¯ä»¥éè¿ä½¿ç¨â导èªâ?->âä¸ä¸é¡¹é误â?è?å?é项è¿è¡æµ?è§ã
å¾ 4ï¼Test::Unit è¾åºç¤ºä¾
âè½¬è³æµè¯â?å¨ä½é项ï¼ä½?äºç¼è¾å¨çªå?£çä¸ä¸æè?å?ä¸ï¼ï¼è½è®©æ¨å¨ç±»å?å
¶ç¸åºçæµè¯ç¨ä¾ç´æ¥å¿«é跳转ãå¨ç¼è¾å¨çªå?£ä¸å?³é®ç¹å»æº?æä»¶çä»»ä½å°æ¹ï¼ç¶å?éæ©â导èªâ?->âè½¬è³æµè¯â?é项ï¼Windows ç³»ç»ä¸å¿«æ?·é®æ¯ Ctrl+Shift+Tï¼Macintosh ç³»ç»ä¸å¿«æ?·é®æ¯ Command+Shift+Tï¼ãâè½¬è³æµè¯â?å¨ä½è½æç¥ Test::Unit ç约å®è§åãå?æ¶ä¹è½æç¥ Railsã?RSpec å ZenTest ç约å®è§åã
Ruby 项ç®ä¹å?¯å¼å
¥âèªå¨æµè¯â?é项ã彿¨ä¿®æ¹æä»¶æ¶ï¼âèªå¨æµè¯â?å?³èªå¨è¿?è¡å?å
æµè¯ã对 Ruby 项ç®ï¼å?å
¶ä»å¤§å¤æ°æ
å½¢èè¨ï¼âèªå¨æµè¯â?è½ç¡®å®åªäºå?å
æµè¯éè¦?被è¿?è¡ãè¥å
¶ä¸?è½ç¡®å®ï¼âèªå¨æµè¯â?åé»è®¤ä¼è¿?è¡ææçå?å
æµè¯ã
âèªå¨æµè¯â?é项卿¨å®è£
ZenTest Ruby Gem å?å?³å?¯ç¨ãå?¯ä»¥ä½¿ç¨âå·¥å
·â?è?å?ä¸çâRuby Gemsâ?é项æ?¥å®è£
ZenTest æè
å
¶ä» Ruby Gemãéå®è¯¥é项å?ï¼IDE ä¼è½½å
¥å·²å®è£
ç Ruby Gemï¼å¹¶æ¾ç¤ºææå?¯ç¨çåæ°ç Gemãç¹å»âå·²å®è£
â?é项å?¡å?¯ä»¥æ¥çå·²ç»?å®è£
ç Ruby Gemã
妿 ZenTest æªè¢«å®è£
ï¼ç¹å»âæ° Gemâ?é项å?¡ï¼å¨å表ä¸å®ä½? zentestï¼å°å
¶éä¸ï¼ç¶å?ç¹å»âå®è£
â?ã
æ¨åºä¼çå°ä¸æ?¡æ¶æ?¯ï¼æç¤º ZenTest å?å
¶ç¸å
³çåºåå·¥å
·å·²è¢«å®è£
ã
å¾ 8ï¼ZenTest å®è£
æ¶æ?¯
䏿¦ ZenTest 被å®è£
ï¼åå¨é¡¹ç®çä¸ä¸æè?å?ä¸å?³å?¯çå°âèªå¨æµè¯â?é项ãå¨â项ç®â?çªå?£ä¸ï¼å?³é®ç¹å» Ruby 项ç®èç¹ï¼ç¶å?éæ©âèªå¨æµè¯â?é项å?¯å¨é¡¹ç®çèªå¨æµè¯ãå¦å?æè¿°ï¼ä¸æ¦æä»¶ææ¹å¨ï¼âèªå¨æµè¯â?å°±ä¼è¿?è¡å?éçå?å
æµè¯æè
ææå?å
æµè¯ã
å¾ 9ï¼è°ç¨âèªå¨æµè¯â?
âèªå¨æµè¯â?çè¾åºä¼åºç°å¨âè¾åºâ?çªå?£ä¸ãå¦æäº§ç失æï¼âèªå¨æµè¯â?å°å¨ç¼è¾å¨çªå?£åºé¨æ¾ç¤ºä¸æ?¡æè¦?æ¶æ?¯ãâè¾åºâ?çªå?£ä¸âèªå¨æµè¯â?çªæ ¼å?¯è½è¢«é?è?ï¼æ¨å?¯ä»¥ç¹å»âèªå¨æµè¯â?é项å?¡ï¼å¹¶æ£æ¥è¯¦ç»çè¾åºä¿¡æ?¯ï¼ä»¥ä¾¿ç¡®å®äº§ç失æçåå ãæ¨ä¹å?¯ä»¥éè¿ç¹å»âèªå¨æµè¯â?è¾åºä¸çè¶
é¾ï¼ç´æ¥è½¬è³å¤±æçæµè¯ç¨ä¾å¤ã
æ?·å¾âè½¬è³æµè¯â?å¨ä½ï¼Ctrl+Shift+Tï¼ä¹è½å¨âèªå¨æµè¯â?ä¸ä¸æä¸å·¥ä½ï¼å?¯ä»¥ç´æ¥è½¬è³å¹é
?çæµè¯æä»¶ã
注æ?ï¼âèªå¨æµè¯â?æ¯æ?ä¼å¨ä¸?ä¹
å?å¢å¼ºãå¢å¼ºæ©å±å?¯è½å
æ¬å¨ä»»å¡åè¡¨ä¸æ¾ç¤ºæµè¯å¤±æä¿¡æ?¯ãJRuby 对 âèªå¨æµè¯â?çæ¯æ?ä¹ä¼å¢å¼ºãè¥æ¨å¨ JRuby 䏿£ç¡®è¿?è¡âèªå¨æµè¯â?æ¶é?å°é®é¢ï¼åè¦?åæ?¢è³ æ¬å° Rubyã
rspec Ruby Gem æ¯å?¦ä¸ä¸ªç¨äºå?å
æµè¯çå·¥å
·ãå
¶ä½ä¸º NetBeans IDE JRuby åå?çä¸é¨åç»å®ï¼æ
妿æ¨ä½¿ç¨ç»å®ç Ruby è§£éå¨ï¼rspec å?³ä¹è¢«å®è£
ãå½ rspec å®è£
å?ï¼é¡¹ç®ä¸ä¾¿ä¼å¼å
¥ä¸ä¸ªå
å?«è§èæä»¶ç spec ç®å½ã
ç¶èï¼æ¨åºå³å®æ¯å?¦ä½¿ç¨æ¬å° Rubyï¼å?¯å¨âé项â?对è¯?æ¡ä¸åæ?¢è§£éå¨ï¼ï¼ä¹å?åè¦?æ£æ¥ä¸ä¸ rspec æ¯å?¦è¢«å®è£
ï¼å?è§?å¾ 6ï¼ãè¥æªå®è£
ï¼ç¹å»âå·¥å
·â?->âRuby Gemsâ?ï¼ç¶å?éæ©âNew Gemsâ?é项å?¡ï¼å?è§?å¾ 7ï¼å°å
¶å®è£
ãå¦ææ¨æ³ä¸ Rails ä¸èµ·ä½¿ç¨ rspecï¼æ¨å?¯è½éè¦?å®è£
å?¦ä¸ä¸ª Ruby Gemï¼å¹¶æ¥çä¸ä¸è¿äºæå¯¼è¯´æã
æ¨å?¯ä»¥ä½¿ç¨âè½¬è³æµè¯â?å¨ä½æ?¥æå¼ä»»æ?è§èæä»¶ãå?¯ä»¥ä½¿ç¨ç¼è¾å¨ä¸ä¸æè?å?ä¸çâæµè¯æä»¶â?æè
âè¿?è¡æä»¶â?æ?¥å¨ rspec çæ§å¶ä¸è¿?è¡è§èæä»¶ï¼è¿æ?å³ç?该æµè¯å°é?µå¾ªå?¯å¨ spec ç®å½ä¸ spec.opts æä»¶ä¸æ¾å°çè§èæä»¶éé¡¹ãæ³¨æ?ï¼å?é?¢è®¨è®ºçç¸å?顾è卿¤ç¯å¢ä¸éç¨äºä½¿ç¨âæµè¯æä»¶â?ææ¯âè¿?è¡æä»¶â?ä¸èã æ¨ä¹å?¯ä»¥ä» IDE ä¸è¿?è¡æµè¯ï¼å¹¶ä½¿ç¨ä¸ç»ä¸?å?çé项ï¼ä¾å¦å
³é红è²åç»¿è²æ è²çæå¸ãå建ä¸ä¸ªå¸¦æä¸?å?é项çæä»¶ spec.opts.netbeansï¼å¹¶å°å
¶æ¾å¨ç¸å?ç spec ç®å½ä¸ã
spec æä»¶æ¨¡æ?¿åè½ç®å?å°ä¸?å?¯ç¨ï¼ä½ä¼å¾å¿«è¢«å¼å
¥è¿æ?¥ã
æ¬æä»ç»?äºæå
³æµè¯ Ruby åºç¨ç¨åº?ç NetBeans IDE ç¹æ§ãå
æ¬åºæ¬å?å
æµè¯ç¹æ§ã?èªå¨æµè¯å rspecãä¹è§£éäºå¦ä½å¨ IDE ä¸å®è£
Ruby Gemï¼ä»¥å?ä½¿ç¨ IDE çå¿«æ?·æµè¯ç¹æ§ã
>> æ´å¤ NetBeans Ruby ææ¡£