锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鐗圭偣錛?br />鑳借繙紼嬪畨瑁呭寘
鍖呬箣闂翠緷璧栧叧緋葷殑綆$悊
綆鍗曞彲闈犵殑鍗歌澆錛坲ninstallation錛?br />鏌ヨ鏈哄埗錛岃兘鏌ヨ鏈湴鍜岃繙紼嬫湇鍔″櫒鐨勫寘淇℃伅
鑳戒繚鎸佷竴涓寘鐨勪笉鍚岀増鏈?br />鍩轟簬Web鐨勬煡鐪嬫帴鍙o紝鑳芥煡鐪嬩綘瀹夎鐨刧em鐨勪俊鎭?br />
浣跨敤錛?br />1. gem query --remote聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) # shortcut: gem q -R
#鍒楀嚭鎵鏈夊寘
2. gem query --remote --name-matches doom聽(tīng)聽(tīng) # shortcut: gem q -R -n doom
#鍒楀嚭鎵鏈夊悕瀛楀尮閰嶇殑鍖?br />3. gem install --remote progressbar聽(tīng) # shortcut: gem i -r progressbar
#瀹夎鎸囧畾鍚嶅瓧鐨勫寘銆?br />gem ins -r progressbar --version '> 0.0.1' #榪欓噷鍙互鍖歸厤鐗堟湰
4. gem specification聽(tīng) progressbar聽(tīng) # shortcut: gem spec progressbar
#鏌ョ湅瀹夎榪囩殑鎸囧畾鍖呰緇嗕俊鎭?br />5.gem uninstall progressbar
#鍗歌澆鍖?br />6. gem query --local # shortcut: 'gem q -L'
#鍒楀嚭鎵鏈夋湰鍦板畨瑁呰繃鐨勫寘
7. gem ins rake
#鍦ㄦ湰鍦板畨瑁咃紝濡傛灉娌℃湁榪滅▼瀹夎
8. gem list -b ^C
#鍒楀嚭鎵鏈変互C寮澶寸殑鍖?br />9. gem_server
寮鍚痳doc鏈嶅姟銆傚彲浠ユ煡鐪嬪畨瑁呭寘鐨剅doc
]]>
Tip 2.榛樿鎯呭喌涓嬶紝ActiveRecord浼?xì)鋴社敤鎺ㄥD〃鏄庣殑綆楁硶錛屽鏋滀綘涓嶅笇鏈涗嬌鐢ㄦ綆楁硶鍙互鍦ㄦ寚瀹氱殑model涓嬌鐢?"set_table_name" 鏂規(guī)硶錛屼緥濡傦細(xì)
class Sheep < ActiveRecord::Base
聽(tīng)set_table_name "sheep"
end
Tip 3.SQL 綾誨瀷鍜孯uby 綾誨瀷涔嬮棿鐨勫搴斿叧緋誨彲鑳戒細(xì)鍦?decimal 綾誨瀷鐨勭簿搴︿笂鍑虹幇闂銆係QL鐨?demimal,numeric,float,double 閮藉搴?Ruby 鐨?Float銆傚彲浠ヤ嬌鐢ㄨ仛鍚堝璞?composed_of 瀵瑰瓧孌佃繘琛屽鐞嗐偮?tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)?
Tip 4.ActiveRecord浼?xì)灏介噺鐨勬妸浠庢暟鎹簱涓幏鍙栫殑鍊艱漿鎹負(fù)Ruby鐨勭被鍨嬶紙璀璇達(dá)紝鍋囪鏁版嵁搴撳瓧孌墊槸 timestamp 綾誨瀷鐨勶紝灝變細(xì)榪斿洖 Time 瀵硅薄錛夈傚鏋滀綘甯屾湜寰楀埌涓涓睘鎬х殑鍘熷鍊鹼紝鍙互鍦ㄥ睘鎬у悕縐板悗闈㈠姞涓?_before_type_cast.
Tip 5.Ruby 璁や負(fù)錛氶櫎浜?nil 鍜?false 涔嬪鐨勬墍鏈夊奸兘琚В閲婁負(fù) true銆傛墍浠ワ紝濡傛灉瑕佹煡璇竴涓?boolean 鍨嬪瓧孌電殑鐘舵侊紝灝卞繀欏誨湪瀛楁鍚嶇殑鍚庨潰鍔犱笂涓涓棶鍙鳳細(xì)
user = User.find_by_name("Dave")
if user.superuser? # 涓嶅彲浠ヤ嬌鐢?user.superuser錛屽惁鍒欎笉璁烘暟鎹簱涓瓨鍌ㄧ殑鏄暟瀛?0銆佸瓧絎︿覆 f 榪樻槸寰瘋鐨?N錛屾鏉′歡閮藉皢鎴愮珛銆?br />聽(tīng)grant_privileges
end
Ruby on Rails鏄竴涓緢涓嶉敊鐨剋eb寮鍙戞鏋訛紝涓嶈繃鐢變簬鐩墠鍏舵湰韜鍥介檯鍖栫殑鏀寔杈冨樊錛屾墍浠ラ渶瑕佷竴浜涜緟鍔╃殑涓滆タ鏉ヨВ鍐沖浗闄呭寲闂銆?/font>
鎴戞渶鍏堜嬌鐢ㄧ殑鏄竴涓彨localization鐨勬彃浠訛紝榪欎釜鎻掍歡鐨勪嬌鐢ㄨ鏄庡湪Ruby on Rails瀹樻柟鐨剋iki涓婇潰鏈夛紝榪欎釜鎻掍歡浣跨敤姣旇緝綆鍗曪紝涓嶈繃鍔熻兘姣旇緝寮便?/font>
鐩墠浣跨敤鐨勬槸Ruby-GetText錛岃繖涓彃浠跺姛鑳藉己澶э紝鍩轟簬GNU鐨刧ettext錛岃緇嗙殑浣跨敤璇存槑鍦?/font> http://manuals.rubyonrails.com/read/chapter/105 涓婇潰鏈夊啓錛屾垜澶ф鎻愪竴涓嬭鐐癸細(xì)
棣栧厛瑕佹槸Ruby on Rails鏀寔UTF-8錛岄氳繃灝嗗涓嬩唬鐮佹坊鍔犲埌environment.rb涓細(xì)
$KCODE = 鈥榰鈥?br />require 鈥榡code鈥?/font>
鎺ョ潃鏄畨瑁匯uby-GetText錛岃繍琛実em install gettext灝卞彲浠ヤ簡(jiǎn)錛屽鏋滄槸Windows騫沖彴灝遍?錛屽惁鍒欓?銆傛帴鐫灝辨槸鍦ㄩ」鐩牴鐩綍涓嬮潰鍒涘緩po鐩綍錛岄噷闈㈡坊鍔犱綘闇瑕丩ocale鐨勫悕瀛椾綔涓哄瓙鐩綍錛屾瘮濡俥n, zh_CN絳夈傞渶瑕佸浗闄呭寲鐨勫瓧絎︿覆閮戒互_(鈥?)鏉ヤ功鍐欙紝姣斿鎯沖浗闄呭寲鈥滅紪杈戔濊繖涓爣絳撅紝灝卞彲浠ュ湪瑙嗗浘鐨剅html涓嬌鐢╛(鈥滶dit鈥?錛岃繖鏍峰湪鏄劇ず鐨勬椂鍊欎細(xì)鑷姩鏍規(guī)嵁Locale鏉ユ浛鎹㈡垚鐩稿簲鐨勫箋?/font>
鎺ョ潃鍦ㄩ」鐩殑rakefile閲岄潰濡備笅鍐呭錛?/font>
desc 鈥淐reate mo-files for L10n鈥?br />task :makemo do
聽(tīng) GetText.create_mofiles(true, 鈥減o鈥? 鈥渓ocale鈥?
end
闇瑕佹敞鎰忕殑鏄湪涓婇潰緇欏嚭鐨勯摼鎺ョ殑閭g瘒鏂囩珷閲岄潰錛岃繕闇瑕佹坊鍔爑pdatepo榪欐牱涓涓洰鏍囷紝涓嶈繃榪欎釜鐩爣鍦ㄦ垜榪欎笉璧蜂綔鐢紝鎬繪槸鍑洪敊錛屾垜鐨勫姙娉曟槸涓嬭澆閭g瘒鏂囩珷闄勫甫鐨勪唬鐮侊細(xì) http://www.digitale-wertschoepfung.de/artikel/gettext/using-gettext-with-rails.tgz 銆傚湪閲岄潰鐨剆cript鐩綍涓嬮潰鏈変竴涓猯ocalize鏂囦歡錛屾妸瀹冩嫹璐濆埌浣犵殑欏圭洰鐨剆cript鐩綍涓嬮潰錛岀劧鍚庤繍琛宺uby ./script/localize {鏂囨湰鍩熺殑鍚嶅瓧}灝卞彲浠ヤ粠controllers, views涓洿鏂皃o鏁版嵁錛岀敤Unicode緙栬緫鍣紙姣斿UltraEdit錛変慨鏀瑰悇涓猵o鏂囦歡錛岀劧鍚庤繍琛宺ake makemo灝卞彲浠ヤ簡(jiǎn)銆傚叧浜庡鏋滀慨鏀筧pplication.rb鍙?qiáng)鍏朵粬controller鐨勪唬鐮侊紝鏌ョ湅緇欏嚭鐨勯摼鎺ャ傛鏃墮噸鏂板惎鍔╯erver錛屽氨鍙互鏌ョ湅鏁堟灉浜?jiǎn)銆?/font>
聽(tīng) 聽(tīng) 鍏冪紪紼嬪茍涓嶆槸涓涓緢鏂扮殑姒傚康錛岄氬父鍏冪紪紼嬭璁や負(fù)鏄氳繃紼嬪簭鏉ョ敓鎴愮▼搴忥紝濡傛灉浠庤繖縐嶆剰涔変笂鏉ヨ冭檻錛岄偅涔坙ex鍜寉acc浠ュ強(qiáng)JavaCC搴旇閮藉彲浠ョ畻鏄叿鏈変簡(jiǎn)鍏冪紪紼嬬殑姒傚康錛屽湪Java涓紝鍏冪紪紼嬪緱鍒頒簡(jiǎn)騫挎硾鐨勫簲鐢ㄣ備絾鍦≧uby涓紝鍏冪紪紼嬬殑浣跨敤鍙樺緱鐩稿綋鐨勭畝鍗曞拰瀹規(guī)槗瀹炵幇錛屼嬌鐢≧uby璇█鏈韓鏉ヤ駭鐢烺uby浠g爜錛屼笉闇瑕佸熷姪澶栭儴鐨勫伐鍏鳳紝钁楀悕鐨凴oR妗嗘灦灝辨槸寤虹珛鐨凴uby鍏冪紪紼嬬殑鍩虹涓婄殑銆傚彲鑳戒綘浣犲鍏冪紪紼嬭繕娌′粈涔堟蹇碉紝浣嗘槸Ruby宸茬粡鍐呭緩浜?jiǎn)鍏兙~栫▼榪欑鏈哄埗錛屾墍浠ュ緢鏈夊彲鑳斤紝浣犲湪涓嶇煡涓嶈涓氨宸茬粡浣跨敤浜?jiǎn)Ruby鍏冪紪紼嬫妧鏈負(fù)浣犲甫鏉ョ殑鏂逛究涔嬪銆傚涓嬮潰榪欐浠g爜錛?/font>
class Person
聽(tīng) 聽(tīng) 鍦≧uby On Rails涓紝鏈変竴涓狾R鏄犲皠灞傦紝灝辨槸鍔ㄦ佺殑浠庝竴寮犲叧緋昏〃鏄犲皠鍒頒竴涓璞★紝榪欎富瑕佺敱ActiveRecord綾繪潵瀹炵幇銆傚湪OR鏄犲皠妯″瀷涓紝灝嗗叧緋繪暟鎹簱涓殑鍏崇郴琛ㄨ〃鏄犲皠鍒板璞℃ā鍨嬫椂錛屽皢鍏崇郴琛ㄧ殑琛ㄥ悕鏄犲皠鍒扮被鍚嶏紝琛ㄤ腑鐨勬瘡涓涓厓緇勬槧灝勫埌瀵瑰簲浜庤繖涓被鐨勪竴涓璞★紝鍏冪粍鐨勪竴涓瓧孌靛搴斾簬瀵硅薄鐨勪竴涓睘鎬с?/font>
鍋囧鎴戜滑鏈変竴涓繚瀛樿亴鍛樺熀鏈俊鎭殑鏂囦歡錛屾枃浠剁殑鏍煎紡鏄繖鏍風(fēng)殑錛氱涓琛屾槸鏂囦歡鍐呭鐨勬瘡涓瓧孌電殑鍚嶇О錛屼粠絎簩琛屽紑濮嬶紝鍒欐槸姣忎釜鑱屽憳鐨勫熀鏈俊鎭傜幇鍦ㄦ垜浠湁涓涓枃浠跺悕涓衡渆mployee.txt鈥濈殑鏂囦歡錛屽叾鍐呭濡備笅鎵紺猴細(xì)
name,age,gender
"John", 23, "male"
"Linclon", 25, "male"
鍋囪鎴戜滑灝辮浠庤繖涓枃鏈枃浠朵腑璇誨彇鏁版嵁錛屽茍榪涜涓瀹氱殑澶勭悊銆傚鏋滄槸浣跨敤C++緙栫▼錛屼綘棣栧厛涓瀹氫細(xì)鎯沖埌搴旇瀹氫箟涓涓狤mployee綾伙紝鐒跺悗榪欎釜綾諱腑鏈塶ame, age, gender榪欎簺鎴愬憳鍙橀噺銆備絾鏄槸閲囩敤榪欑鏂規(guī)硶鐨勮瘽錛屽彲浠ュ彂鐜幫紝濡傛灉鎯沖湪鑱屽憳?shù)俊鎭腑鍔犲叆涓涓瓧孌碉紝姣斿閮ㄩ棬錛坉epartment錛夛紝灝變笉寰椾笉淇敼Employee綾葷殑浠g爜錛屽湪Employee綾諱腑澧炲姞涓涓渄epartment鈥濇垚鍛樺彉閲忥紝鎵浠ユ垜浠殑浠g爜鏄珮搴︿緷璧栦簬鏂囦歡鐨勫叿浣撴牸寮忥紝榪欏綋鐒朵笉鏄竴涓ソ鐨勭幇璞°傛垜浠笇鏈涙湁涓縐嶆洿綆鍗曞拰浼橀泤鐨勬柟妗堬紝榪樻湁錛孯uby鍔ㄦ佹ф彁楂樼粰鎴戜滑涓涓В鍐蟲(chóng)柟妗堬紝浣嗘槸錛屾垜浠簲璇ヤ粠鍜屼笅鎵嬪憿錛岃繖灝遍渶瑕丷uby鐨勫厓緙栫▼鑳藉姏銆?/font>
聽(tīng) 聽(tīng) 棣栧厛錛屾垜浠兂搴旇鏈変竴涓亴鍛樼被錛屽湪Rails涓紝姣忎釜鍏崇郴琛ㄧ殑鍚嶇О浼?xì)鎴愪负绫荤殑鍚嵖U幫紝鍦ㄨ繖閲岋紝閲囩敤綾諱技鐨勬柟娉曪紝灝嗘枃鏈枃浠剁殑鍚嶇О浣滀負(fù)綾葷殑鍚嶇О錛屽湪Ruby涓紝綾誨悕鍚屾椂涔熸槸涓涓父閲忓悕錛屾墍浠ョ涓涓瓧姣嶅繀欏諱負(fù)澶у啓錛屾垜浠嬌鐢ㄥ涓嬬殑浠g爜鏉ョ敓鎴愮被鍚嶃?/font>
class_name = File.basename(file_name, ".txt").capitalize
# "employee.txt" => "Employee"
klass = Object.const_set(class_name, Class.new)
Class.new鐢熸垚涓涓柊鐨勭被錛岃繖涓被鐨勫悕縐版槸鍖垮悕鐨勶紝鎵浠ラ噰鐢╟onst_set鎿嶄綔鏉ョ粦瀹氫竴涓被鍚嶏紝鍙橀噺klass鏄柊綾誨瀷鐨勫紩鐢ㄣ?/font>
鐢熸垚浜?jiǎn)杩欎釜绫讳互鍚庡Q岄渶瑕佹兂榪欎釜綾繪坊鍔犲鍚嶏紝騫撮緞鍜屾у埆榪欎簺灞炴э紝榪欎簺灞炴х殑鍚嶇О鏄湪鏂囨湰鏂囦歡鐨勭殑絎竴琛屼腑緇欏嚭鐨勩?br />
data = File.new(file_name)
header = data.gets.chomp
data.close
names = header.split(",")
涓嬮潰鐨勪唬鐮佺粰鍑轟簡(jiǎn)濡備綍鐢熸垚榪欎簺灞炴э紝浠ュ強(qiáng)鍒濆鍖栬繖浜涘睘鎬у箋?br />
鐜板湪錛屾湁浜?jiǎn)涓緋誨垪鐨勮闂瓙錛堝彲璇誨拰鍙啓錛夛紝閫氳繃instance_variable_set鏂規(guī)硶錛屽張緇欐瘡涓睘鎬у仛浜?jiǎn)鍒濆鍖栥?br />
鍙橀噺names鏄湪鍧楀閮ㄥ畾涔夌殑錛岀敱浜庡潡鐨勯棴鍚堟э紝鎵浠ュ彉閲弉ames鍦ㄥ潡涓篃鏄湁鏁堢殑銆傚綋鐒?dòng)灱屼皋Z簡(jiǎn)紼嬪簭鐨勬紨紺猴紝鍙堝畾涔夌殑浜?jiǎn)涓涓猼o_s鏂規(guī)硶錛屼唬鐮佸涓嬫墍紺猴細(xì)
聽(tīng) 聽(tīng) 瀹屾垚浜?jiǎn)杩欎簺浠ュ悗锛屽浜幘c葷殑鏋勯犲凡緇忓熀鏈粨鏉熶簡(jiǎn)錛岀幇鍦ㄥ氨闇瑕佺湡姝g殑浠庢枃鏈枃浠朵腑璇誨彇鏁版嵁浜?jiǎn)銆備粠鏂囨湰鏂囦歡璇繪暟鎹簲璇ユ槸涓涓被鏂規(guī)硶錛岃屼笉鏄竴涓疄渚嬬殑鏂規(guī)硶錛屽叾瀹炵幇浠g爜濡備笅錛?br />
鍦ㄨ繖涓柟娉曚腑錛屼嬌鐢ㄥ瓧鐨勭被鍚嶆潵鍖歸厤鐩稿叧鐨勬枃浠訛紝姣斿灝咵mployee綾繪槧灝勫埌鈥渆mployee銆倀xt鈥濄?br />
鐒跺悗錛屼粠鏂囦歡涓鍙栬亴鍛樹(shù)俊鎭紝鐢變簬絎竴琛屾槸瀛楁瀹氫箟錛屾墍浠ヨ鑸嶅純絎竴琛屾暟鎹備粠絎簩琛屽紑濮嬭鍙栨暟鎹紝姣忚鍙栦竴琛屾暟鎹紝鍒欐瀯閫犱竴涓狤mployee瀹炰緥銆?font color="black">閫氳繃涓婇潰榪欎釜綆鍗曠殑渚嬪瓙錛屾垜浠彲浠ョ湅鍑哄厓緙栫▼鐨勫姛鑳芥槸鐩稿綋涔嬪己澶х殑錛屼嬌鐢ㄥ厓緙栫▼鎶鏈紝鍙互鏋勯犵浉褰撶畝鍗曪紝浼橀泤鐨勮В鍐蟲(chóng)柟妗堛?/font>
1.瀹夎Ruby
http://rubyforge.org/frs/?group_id=167
榪欓噷鏈墂indows涓閿畨瑁呯増鏈?/font>
2.鍦ㄧ嚎瀹夎Rails
C:\> gem聽(tīng)install聽(tīng)rails聽(tīng)--include-dependencies
浠ヤ笂鏂規(guī)硶鍦ㄤ竴鑸儏鍐典笅閮芥槸鍙鐨? 浣嗗鏋滀笉琛岀殑璇? 榪樺彲鍙傜収浠ヤ笅鏂規(guī)硶:
1. 璁塊棶:http://instantrails.rubyforge.org/wiki/wiki.pl
聽(tīng)聽(tīng)
聽(tīng)聽(tīng) 涓嬭澆鏈鏂扮増鏈殑InstantRails
2. 瑙e帇鍒頒綘鎸囧畾鐨勭洰褰曚笅, 娉ㄦ剰, 鐩綍鍚?鍖呮嫭璺緞鍚?涓嶈兘鏈夌┖鏍?br />
3. 璁塊棶鍏朵腑鐨剅eadme.txt, 閲岄潰璇︾粏璇存槑浜?jiǎn)濡備綍閰嵕|拰榪愯InstantRails