ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久免费观看视频,亚洲国产精品二十页,亚洲综合视频在线http://www.aygfsteel.com/sshwsfc/category/17421.html1=1zh-cnTue, 27 Feb 2007 10:38:59 GMTTue, 27 Feb 2007 10:38:59 GMT60说说Railså§ï¼Œconfig的幕åŽå·¥ä½?/title><link>http://www.aygfsteel.com/sshwsfc/archive/2006/11/21/82487.html</link><dc:creator>差沙</dc:creator><author>差沙</author><pubDate>Tue, 21 Nov 2006 04:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/sshwsfc/archive/2006/11/21/82487.html</guid><wfw:comment>http://www.aygfsteel.com/sshwsfc/comments/82487.html</wfw:comment><comments>http://www.aygfsteel.com/sshwsfc/archive/2006/11/21/82487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sshwsfc/comments/commentRss/82487.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sshwsfc/services/trackbacks/82487.html</trackback:ping><description><![CDATA[ <p>说ruby是怪异的语法有点ä¸å¦¥å½“åQŒåЍæ€è¯­­a€é‡Œé¢ä¸ä¹˜q™æ ·çš„语法出现。但是看了一些æºç åŽå‘现åQŒä‹É用rubyçš„ç”¨æ³•çœŸçš„å„æœ‰ä¸åŒï¼Œž®±åƒå¤§å®¶ä»¥å‰è¯´çš„åQŒrubyæ¯ä¸ªäººå†™å‡ºæ¥çš„å¯èƒ½éƒ½ä¸åŒã€?/p> <p>现æ¥è¯´Rails里é¢å¦‚何加è²configçš„å§ã€?/p> <p>在java里é¢config¾l对是一个resourceæ–‡äšgåQŒç„¶åŽé€šè¿‡è¯Õd–é…置的工具加入进æ¥ï¼Œåœ¨åˆ†æžå¤„ç†ã€?/p> <p>在ROR里é¢å®Œå…¨ä¸æ˜¯˜q™ä¹ˆå›žäº‹ã€?/p> <p>1.首先大家è¦äº†è§£çš„æ˜¯ï¼Œåœ¨æˆ‘们å¯åŠ?ruby script/server 的时候,railsåšäº†ä¸€¾pÕdˆ—的处ç†ï¼Œæœ€åŽä»–执行äº?font face="Arial">environment.rb</font></p> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> <br /> </div> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">Rails::Initializer.run do </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">config</span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> ˜q™é‡Œèƒ½æ’入我们自å·Þqš„é…置。   Â?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">  </span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> config. 之类    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">end   </span> </div> <p class="alt">˜q™é‡Œçš„config其实是Initializer内部的一个å˜é‡ï¼ŒæŽŒæŽ§å…¨å±€çš„é…¾|®ä¿¡æ¯ï¼Œæˆ‘们å¯ä»¥ä½¿ç”¨˜q™ä¸ªconfigæ¥é…¾|®æˆ‘们想è¦çš„ã€?span><span>Rails::Initializer.runçš„æºç æ˜¯˜q™æ ·çš„,yieldå†ä¸€‹Æ¡æ˜¾½CÞZº†ä»–çš„å¨åŠ›åQŒè®©æˆ‘们在酾|®æ–‡ä»¶ä¸­å¾—以é…ç½®config。然åŽå®žä¾‹åŒ–了一个initializer 之åŽåQŒæŠŠconfigä½œäØ“å‚æ•°ä¼ å…¥äº†ã€?/span></span></p> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> <br /> </div> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> self.run(command </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> :process, configuration </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> Configuration.new)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span> <span style="COLOR: #0000ff">yield</span> <span style="COLOR: #000000"> configuration </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000"> block_given?    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  initializer </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> new configuration    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  initializer.send(command)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  initializer    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end   </span> </div> <p class="alt">我们接ç€å¾€ä¸‹èµ°åQŒå¯ä»¥çœ‹åˆ°initializer åšäº†ä¸€¾pÕdˆ—çš„åˆå§‹åŒ–工作åQŒåŒ…括load_path的设定,路由的åˆå§‹åŒ–åQŒå’Œactiverecordçš„åˆå§‹åŒ–。我们关心的˜q˜æ˜¯é…置如何起作用,那么æ¥çœ‹çœ?font face="Arial">environments目录下é¢çš„é…¾|®æ–‡ä»¶æ˜¯å¦‚何导入的å§ã€?/font></p> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> </div> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> </div> </div> <p> <span id="wmqeeuq" class="builtin"> </span> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> load_environment    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  silence_warnings do   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    config </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> configuration    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    constants </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> self.</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">.constants    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    eval(IO.read(configuration.environment_path), binding)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    (self.</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">.constants </span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000"> constants).each do </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">const</span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      Object.const_set(const, self.</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">.const_get(const))    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> </div> <p>IO<span>.read(configuration.environment_path) åQŒï¼Œ˜q™é‡Œž®×ƒ¸ä½¿ç”¨ä»€ä¹ˆå›žè°ƒä¸å›žè°ƒäº†ï¼Œè€Œæ˜¯òq²è„†IO拿出æ¥eval一把,˜q™é‡Œä¹Ÿæ˜¯åƒäº†ä¸€æƒŠï¼Œ˜q™æ ·ä¹Ÿå¯ä»¥å‘€~~~~~~~ç„¶åŽåQŒæˆ‘们å¯ä»¥çœ‹çœ‹ï¼Œä»–处ç†å¸¸é‡çš„æ–ÒŽ³•åQŒæŠŠè‡ªå·±é…置文äšg中的帔R‡å…¨éƒ¨æ”‘Ö…¥Object里é¢åQŒè“v到全局帔R‡çš„目的ã€?/span></p> <p> <span>最¾lçš„˜q˜æ˜¯<font face="Arial">initialize_framework_settingsåQŒä‹É用了有一个ruby的技巧ã€?/font></span> </p> <span> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> </div> <div id="wmqeeuq" class="bar"> </div> <p class="alt"> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> initialize_framework_settings    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  configuration.frameworks.each do </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">framework</span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    base_class </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> framework.to_s.camelize.constantize.const_get(</span> <span style="COLOR: #800000">"</span> <span style="COLOR: #800000">Base</span> <span style="COLOR: #800000">"</span> <span style="COLOR: #000000">)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    configuration.send(framework).each do </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">setting, value</span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000">    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      base_class.send(</span> <span style="COLOR: #800000">"</span> <span style="COLOR: #800000">#{setting}=</span> <span style="COLOR: #800000">"</span> <span style="COLOR: #000000">, value)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end   </span> </div> <p>configuration.frameworks里é¢å­˜æ”¾çš„æ˜¯rails个个¾l„äšgçš„å字,比方说active_recordä¹‹ç±»ã€‚ç„¶åŽæŠŠ˜q™ä¸ªå字大写转æ¢åQŒç„¶åŽç”¨constantizeå–å¾—ActiveRecord˜q™ä¸ªModule(注æ„åQŒè¿™äº›ä¸œè¥‰Kƒ½åœ¨activesupport里é¢å‘¢ï¼Œactivesupport/lib/active_support/core_ext/string/inflections.rb )。然åŽç”¨const_getå–å¾—˜q™ä¸ªæ¨¡å—çš„Base¾c»ï¼Œä¹Ÿå°±æ˜¯ActiveRecord::Base˜q™ä¸ª¾cÖMº†åQˆä¸‹é¢éƒ½å«åšBase¾c»ï¼‰åQŒæ‰€æœ‰çš„Rails的组仉™ƒ½æ˜¯è¿™ä¸ªå‘½å规则改天我们自己想è¦åšä¸€ä¸ªRails的组件加˜q›æ¥åQŒä¹Ÿå¯ä»¥˜q™æ ·åQˆä½†æ˜¯è¦½E微修改一个æºç ï¼‰ã€?/p> <p>ç„¶åŽåQŒæˆ‘们å§config里é¢çš„内容给Base¾c…R€‚configuration.send(framework)是调用一个组件å¿U°çš„æ–ÒŽ³•åQŒæ¯”方说active_recordåQŒå°±æ˜¯åŽ»çš„config里é¢çš„active_record属性(˜q™æ˜¯æœ€åŸºæœ¬çš„)åQŒé€šè¿‡åŽé¢çš„do我们å¯ä»¥çœ‹åˆ°config˜q”回的是一个hashåQŒç„¶åŽæŠŠhash中æ¯ä¸€ä¸ªkeyä½œäØ“å˜é‡åQŒvalueä¸ÞZ¼ å…¥å€û|¼Œä¼ å…¥Base¾c…R€‚。。这里大家应该没什么问题了åQŒçœ‹çœ‹æˆ‘们的configæ–‡äšg是怎么写的å§ã€?/p> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> <br /> </div> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> Settings specified here will take precedence over those in config/environment.rb    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> In the development environment your application's code is reloaded on    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />#</span> <span style="COLOR: #008000"> every request.  This slows down response time but is perfect for development    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />#</span> <span style="COLOR: #008000"> since you don't have to restart the webserver when you make code changes.    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">config.cache_classes </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> false   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> Log error messages when you accidentally call methods on nil.    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">config.whiny_nils </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> true   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> Enable the breakpoint server that script/breakpointer connects to    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">config.breakpoint_server </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> true   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> Show full error reports and disable caching    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">config.action_controller.consider_all_requests_local </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> true   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />config.action_controller.perform_caching             </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> false   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />config.action_view.cache_template_extensions         </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> false   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />config.action_view.debug_rjs                         </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> true   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000"> Don't care if the mailer can't send    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">config.action_mailer.raise_delivery_errors </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> false   </span> </div> <p class="alt">哦,看ç€å¾ˆæ™•å§ï¼Œconfigž®±æ˜¯æˆ‘们的酾|®å¯¹è±¡ï¼ŒæŒ‰ç…§æˆ‘们上é¢çš„说法,config.action_view之类frameworkçš„å˜é‡åº”该是一个hashæ‰å¯¹å‘€åQŒå¦‚果是hashçš„è¯åQŒä¸åº”该用这æ ïLš„æ–¹å¼ä¼ å…¥åQŒå¯èƒ½ä¼šç”?config.action_view = {:debug_rjs => true}æ¥ä¼ å…¥ã€?/p> <p>OK.我们æ¥çœ‹˜q™ä¸ªå˜é‡åˆ°åº•是什么样的hashã€?/p> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> </div> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> initialize    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  <img src="http://www.aygfsteel.com/images/dot.gif" />.    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  <img src="http://www.aygfsteel.com/images/dot.gif" />.    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span> <span style="COLOR: #0000ff">for</span> <span style="COLOR: #000000"> framework </span> <span style="COLOR: #0000ff">in</span> <span style="COLOR: #000000"> default_frameworks    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    self.send(</span> <span style="COLOR: #800000">"</span> <span style="COLOR: #800000">#{framework}=</span> <span style="COLOR: #800000">"</span> <span style="COLOR: #000000">, OrderedOptions.new)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end   </span> </div> <p class="alt">在åˆå§‹åŒ–˜q™äº›å˜é‡çš„æ—¶å€™ï¼ŒRails¾l™ä»–赋å€égØ“OrderedOptions.<span id="wmqeeuq" class="keyword">new。这个特ŒDŠçš„¾cÕdž‹å¯èƒ½ž®±æ˜¯å…³é”®ã€?/span></p> <span id="wmqeeuq" class="keyword"> <div id="wmqeeuq" class="code_title"> <em> <font color="#990033">ruby 代ç </font> </em> <br /> </div> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000"> OrderedOptions </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000"> OrderedHash </span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000">:nodoc:    </span> <span style="COLOR: #008000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000">  </span> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> []</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">(key, value)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    super(key.to_sym, value)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> [](key)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    super(key.to_sym)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span> <span style="COLOR: #0000ff">def</span> <span style="COLOR: #000000"> method_missing(name, </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">args)    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000"> name.to_s </span> <span style="COLOR: #000000">=~</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">(.</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000">)</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">$</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      self[$</span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.to_sym] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> args.first    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span> <span style="COLOR: #0000ff">else</span> <span style="COLOR: #000000">   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      self[name]    <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end   <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end   </span> </div> <p class="alt">看到其中的玄妙了么,method_missing~~~åQï¼ å¦‚æžœè°ƒç”¨ä¸€ä¸?*=的方æ³?åQŒå°±åƒå½“用传入一个HASHçš„å€û|¼Œkeyž®±æ˜¯æ–ÒŽ³•çš„åå­—ã€?/p> <p>也就是:<span>config.action_view.debug_rjs  = </span><span id="wmqeeuq" class="keyword">true</span><span> 相当äº?span>config.action_view[:debug_rjs] = true</span></span></p> <p> <span> <span>OK åQŒå¤§ä½“上æè¿°äº†ä¸€ä¸‹ï¼Œå¯ä»¥çœ‹åˆ°½Ž€å•的一个Railsåˆå§‹åŒ–å·²¾l给我们展示了几乎全部rubyçš„é“丽之处,˜q™èƒ½è¯´æ˜ŽåQŒè¿™ä¸ªäº®ç‚¹è‚¯å®šæ˜¯è´¯ç©¿rails的基本,在以åŽçš„æ·±å…¥ç ”究中我们就能看åˆîCº†ã€?/span> </span> </p> </span> </span> <img src ="http://www.aygfsteel.com/sshwsfc/aggbug/82487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sshwsfc/" target="_blank">差沙</a> 2006-11-21 12:10 <a href="http://www.aygfsteel.com/sshwsfc/archive/2006/11/21/82487.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>说说Railså§ï¼Œå¯åЍ开始ã€?/title><link>http://www.aygfsteel.com/sshwsfc/archive/2006/11/20/82401.html</link><dc:creator>差沙</dc:creator><author>差沙</author><pubDate>Mon, 20 Nov 2006 15:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/sshwsfc/archive/2006/11/20/82401.html</guid><wfw:comment>http://www.aygfsteel.com/sshwsfc/comments/82401.html</wfw:comment><comments>http://www.aygfsteel.com/sshwsfc/archive/2006/11/20/82401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/sshwsfc/comments/commentRss/82401.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/sshwsfc/services/trackbacks/82401.html</trackback:ping><description><![CDATA[ <p>ä¸ÞZº†è®°å½•自己看Railsæºç çš„过½E‹ï¼Œå…¨ç¨‹è®°å½•无废è¯ã€?br /><br />我们看看script/server都干了什ä¹?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">require File.dirname(__FILE__) </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">/../config/boot</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />require </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">commands/server</span> <span style="COLOR: #000000">'</span> </div> <br />引用了boot.rb˜q™ä¸ªæ–‡äšg。看æ¥è¿™ä¸ªæ–‡ä»¶æ˜¯railså¯åŠ¨çš„å…¥å£ï¼Œæ¥çœ‹çœ‹æ€Žä¹ˆå›žäº‹å§ã€?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">unless defined?(RAILS_ROOT)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  root_path </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> File.join(File.dirname(</span><span style="COLOR: #800080">__FILE__</span><span style="COLOR: #000000">), </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">..</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  unless RUBY_PLATFORM </span><span style="COLOR: #000000">=~</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">mswin32</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">pathname</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    root_path </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Pathname.new(root_path).cleanpath(true).to_s<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  end<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  RAILS_ROOT </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> root_path<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end</span></div>˜q™ä¸€éƒ¨åˆ†å®šä¹‰äº†RAILS_ROOT˜q™ä¸ª¾pÈ»Ÿçš„全局å˜é‡åQŒæŒ‡å®šäº†™å¹ç›®çš„æ ¹ç›®å½•åQŒå¤§å®¶å¯ä»¥åœ¨ä»¥åŽåŽä¸½çš„ä‹É用了ã€?br /><br />下一部分是找到railsåQŒç²—略看一下ã€?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> File.directory?(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">#{RAILS_ROOT}/vendor/rails</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    require </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">#{RAILS_ROOT}/vendor/rails/railties/lib/initializer</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">rubygems</span><span style="COLOR: #800000">'</span></div>˜q™é‡Œèƒ½çœ‹åˆŽÍ¼Œä»–先跑到<font color="#800000">vendor/rails<font color="#000000">åŽÀL‰¾rails了,˜q™å°±æ˜¯æˆ‘ä»¬äØ“ä»€ä¹ˆèƒ½åœ¨æ’仉™‡Œç”¨rails是原因。如果没有那么gems的干‹z…R€?br />æŽ¥ä¸‹æ¥æ˜¯åˆå§‹åŒ–一下load_pathåQŒæ²¡ä»€ä¹ˆçœ‹çš„了。boot.rbž®Þp¿™æ ïLš„å§ã€?br /><br />回到script/server的第二行åQŒåŒ…å«äº†<span style="COLOR: #000000">'</span><span style="COLOR: #000000">commands/server</span><span style="COLOR: #000000">'˜q™ä¸ªæ–‡äšgåQŒè¿™ä¸ªæ–‡ä»¶æ˜¯ä»€ä¹ˆï¼ŸRailsçš„æºç é‡Œé¢æ‰¾å§ã€‚我们在Railsçš„æºç é‡Œé¢æ‰¾åˆ°è¿™ä¸ªæ–‡ä»¶ã€?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">active_support</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">fileutils</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />begin<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  require_library_or_gem </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">fcgi</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />rescue Exception<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #008000">#</span><span style="COLOR: #008000"> FCGI not available</span><span style="COLOR: #008000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">end<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />server </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> case ARGV.first<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  when </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">lighttpd</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    ARGV.shift<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  when </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">webrick</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    ARGV.shift<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> RUBY_PLATFORM !</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">mswin</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&&</span><span style="COLOR: #000000"> !silence_stderr { `lighttpd </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">version` }.blank? </span><span style="COLOR: #000000">&&</span><span style="COLOR: #000000"> defined?(FCGI)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">lighttpd</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">webrick</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    end<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> server </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">webrick</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  puts </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">=> Booting WEBrick<img src="http://www.aygfsteel.com/images/dot.gif" /></span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  puts </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">=> Booting lighttpd (use 'script/server webrick' to force WEBrick)</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />FileUtils.mkdir_p(</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">w( tmp</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sessions tmp</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">cache tmp</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">sockets ))<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />require </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">commands/servers/#{server}</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div></span></font></font>没想到ActiveRecord居然是在˜q™é‡Œå¼•用的,˜q™ä¸ªActiveRecordé‡Œé¢æ‰©å±•了很对Ruby的既有类型,所以我们看æºç çš„æ—¶å€™å¦‚æžœå‘现有ä¸ç†Ÿæ‚‰çš„æ–ÒŽ³•åQŒå°±æ¥è¿™é‡Œæ‰¾æ‰¾ï¼Œå½“ç„¶åQŒçœ‹Railsçš„API是最好的选择ã€?br /><br />ä»Žå‚æ•îC¸€ç›®äº†ç„Óž¼Œæˆ‘们å¯ä»¥ä¼ å…¥serverçš„å字,<span style="COLOR: #800000">lighttpdå’?span style="COLOR: #800000">webrick<font color="#000000">åQŒæ ¹æ®ä¸åŒçš„server选择ä¸åŒçš„serveræ–‡äšgæ¥è¯»å–。我们还是看çœ?span style="COLOR: #800000">webrick<font color="#000000">çš„å§ã€?br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">webrick</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">optparse</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />OPTIONS </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :port            </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">3000</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :ip              </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">0.0.0.0</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :environment     </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> (ENV[</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">RAILS_ENV</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">development</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).dup,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :server_root     </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> File.expand_path(RAILS_ROOT </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">/public/</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">),<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :server_type     </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> WEBrick::SimpleServer,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :charset         </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">UTF-8</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :mime_types      </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> WEBrick::HTTPUtils::DefaultMimeTypes<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />ARGV.options do </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">opts</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  script_name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> File.basename($0)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.banner </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Usage: ruby #{script_name} [options]</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.separator </span><span style="COLOR: #800000">""</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-p</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--port=port</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, Integer,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Runs Rails on the specified port.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Default: 3000</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">) { </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">v</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> OPTIONS[:port] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-b</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--binding=ip</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, String,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Binds Rails to the specified ip.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Default: 0.0.0.0</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">) { </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">v</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> OPTIONS[:ip] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-e</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--environment=name</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, String,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Specifies the environment to run this server under (test/development/production).</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Default: development</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">) { </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">v</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> OPTIONS[:environment] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-m</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--mime-types=filename</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, String,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />                  </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Specifies an Apache style mime.types configuration file to be used for mime types</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />                  </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Default: none</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">) { </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">mime_types_file</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> OPTIONS[:mime_types] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> WEBrick::HTTPUtils::load_mime_types(mime_types_file) }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-d</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--daemon</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Make Rails run as a Daemon (only works if fork is available -- meaning on *nix).</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          ) { OPTIONS[:server_type] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> WEBrick::Daemon }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-c</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--charset=charset</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, String,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Set default charset for output.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Default: UTF-8</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">) { </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">v</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> OPTIONS[:charset] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.separator </span><span style="COLOR: #800000">""</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.on(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">-h</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">--help</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Show this help message.</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">) { puts opts; exit }<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  opts.parse!<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />end<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />ENV[</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">RAILS_ENV</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> OPTIONS[:environment]<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />RAILS_ENV.replace(OPTIONS[:environment]) </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> defined?(RAILS_ENV)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />require RAILS_ROOT </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">/config/environment</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />require </span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">webrick_server</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />OPTIONS[</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">working_directory</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> File.expand_path(RAILS_ROOT)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />puts </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">=> Rails application started on http://#{OPTIONS[:ip]}:#{OPTIONS[:port]}</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />puts </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">=> Ctrl-C to shutdown server; call with --help for options</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> OPTIONS[:server_type] </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> WEBrick::SimpleServer<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />DispatchServlet.dispatch(OPTIONS)<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div></font></span></font></span></span>本æ¥ä¸æƒ³æŠŠå¤§ŒD늚„代ç è´´ä¸Šæ¥ï¼Œä½†æ˜¯˜q™é‡Œé¢çš„内容å¯èƒ½å¤§å®¶éƒ½æ¯”较关心,涉åŠåˆ°serverçš„å¯åЍ傿•°ã€?br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :port            <span style="COLOR: #000000">=></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">端å£</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :ip              </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> server ip</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :environment     </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000">˜q行环境</span><span style="COLOR: #000000">,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :server_root     </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> web讉K—®çš„目录,åQˆå¾ˆå¤šäh问这个怎么改)</span><span style="COLOR: #000000"><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :server_type     </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> WEBrick::SimpleServer,<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :charset         </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> </span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">UTF-8</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">, ¾~–ç <br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  :mime_types      </span><span style="COLOR: #000000">=></span><span style="COLOR: #000000"> WEBrick::HTTPUtils::DefaultMimeTypes<br /><br />åŽé¢çš„require 引入了两个文ä»Óž¼Œä¸€ä¸ªæ˜¯<span style="COLOR: #800000">'</span><span style="COLOR: #800000">webrick_server</span><span style="COLOR: #800000">'<font color="#000000">åQŒåˆ«çœ‹ï¼Œž®±æ˜¯ä»–。å¦å¤–一个是</font><font color="#800000">config/environment</font><font color="#000000">åQŒè¿™ä¸ªæ–‡ä»¶æ˜¯¾pÈ»Ÿçš„全局é…置文äšgåQŒå¾ˆé‡è¦åQŒæˆ‘们还是下‹Æ¡çœ‹çœ‹è¿™ä¸ªæ–‡ä»¶åŽ»å§ã€‚里é¢è¿˜çœŸæŒºæœ‰æ„æ€ã€?br /><br />åQˆä¸çŸ¥é“blogjava让ä¸è®©å†™ROR的文章,看到有äh写了所以放在首™åµäº†åQŒå¦‚æžœä¸å¦¥ï¼Œæˆ‘会ž®½å¿«åˆ é™¤åQ?/font></span></span><img src ="http://www.aygfsteel.com/sshwsfc/aggbug/82401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/sshwsfc/" target="_blank">差沙</a> 2006-11-20 23:43 <a href="http://www.aygfsteel.com/sshwsfc/archive/2006/11/20/82401.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">·áÔ­ÊÐ</a>| <a href="http://" target="_blank">ËÉÔ­ÊÐ</a>| <a href="http://" target="_blank">¾äÈÝÊÐ</a>| <a href="http://" target="_blank">Ò˱öÏØ</a>| <a href="http://" target="_blank">´ó°²ÊÐ</a>| <a href="http://" target="_blank">É̳ÇÏØ</a>| <a href="http://" target="_blank">Éñ³ØÏØ</a>| <a href="http://" target="_blank">ͼÃÇÊÐ</a>| <a href="http://" target="_blank">ÄÏ·áÏØ</a>| <a href="http://" target="_blank">ãë´¨ÏØ</a>| <a href="http://" target="_blank">ÈøåÈÏØ</a>| <a href="http://" target="_blank">ÓàÇìÏØ</a>| <a href="http://" target="_blank">¸£½¨Ê¡</a>| <a href="http://" target="_blank">ÖÐÎÀÊÐ</a>| <a href="http://" target="_blank">Ó¦³ÇÊÐ</a>| <a href="http://" target="_blank">Î÷¼ªÏØ</a>| <a href="http://" target="_blank">ÐìÎÅÏØ</a>| <a href="http://" target="_blank">ÕýÀ¶Æì</a>| <a href="http://" target="_blank">ÂåÂ¡ÏØ</a>| <a href="http://" target="_blank">¸§ËÉÏØ</a>| <a href="http://" target="_blank">Èô¶û¸ÇÏØ</a>| <a href="http://" target="_blank">ÓÀÌ©ÏØ</a>| <a href="http://" target="_blank">áªÉ½ÏØ</a>| <a href="http://" target="_blank">¡ÁÖ</a>| <a href="http://" target="_blank">»´°²ÊÐ</a>| <a href="http://" target="_blank">ÉÛÎäÊÐ</a>| <a href="http://" target="_blank">¹±¸ÂÏØ</a>| <a href="http://" target="_blank">¸Á¶ûÏØ</a>| <a href="http://" target="_blank">¶¼°²</a>| <a href="http://" target="_blank">ÎâÖÒÊÐ</a>| <a href="http://" target="_blank">רÀ¸</a>| <a href="http://" target="_blank">Öñ±±ÊÐ</a>| <a href="http://" target="_blank">ͼƬ</a>| <a href="http://" target="_blank">ÁùÅÌË®ÊÐ</a>| <a href="http://" target="_blank">°×³ÇÊÐ</a>| <a href="http://" target="_blank">ÎÅÏ²ÏØ</a>| <a href="http://" target="_blank">ãþÑôÏØ</a>| <a href="http://" target="_blank">ƽÓßÏØ</a>| <a href="http://" target="_blank">ÖîôßÊÐ</a>| <a href="http://" target="_blank">ÈéÔ´</a>| <a href="http://" target="_blank">µ¤ÀâÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>