<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>winter (winter)</title>
    <link>https://ruby-china.org/winter</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>一个要把路由拆了的小轮子</title>
      <description>&lt;h2 id="哇喔，这是一个神奇的轮子（不要脸！）"&gt;哇喔，这是一个神奇的轮子（不要脸！）&lt;/h2&gt;
&lt;p&gt;Rails 项目越写越大，路由自然也就越来越多，有的路由针对客户端的，有的是针对管理后台的，有的是针对代理的等等。Rails 默认只是提供了一个地方&lt;code&gt;config/routes.rb&lt;/code&gt;来设置路由，整的这个文件很长，个人觉得这不是很方便管理。&lt;/p&gt;

&lt;p&gt;为什么会有拆分路由的这个想法呢？因为我最早接触的是 Python 的 web 框架&lt;code&gt;Django&lt;/code&gt;，它默认是可以将路由分成不同文件来设置的。&lt;/p&gt;

&lt;p&gt;最开始我只是在一个项目中简单的实现了将路由拆分，但每次新建项目后要想让路由可以分成不同的文件来设置，总要粘贴复制老项目的配置，因此就有了这个小轮子------一个可以把 Rails 路由文件按功能分成几个文件来写的小轮子。&lt;/p&gt;
&lt;h2 id="安装"&gt;安装&lt;/h2&gt;
&lt;p&gt;添加下面这行到 Gemfile:&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'wow-route'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:git&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'https://github.com/winterbang/wow-route.git'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后执行下面的命令&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bundle
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="使用"&gt;使用&lt;/h2&gt;
&lt;p&gt;执行下面的命令在&lt;code&gt;config/routes&lt;/code&gt; 目录中生成&lt;code&gt;admin.rb&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;rails g wow:route admin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果执行&lt;code&gt;rails g wow:route api&lt;/code&gt;则生成&lt;code&gt;api.rb&lt;/code&gt;，
然后可以像编辑&lt;code&gt;config/routes.rb&lt;/code&gt;文件一样在&lt;code&gt;admin.rb&lt;/code&gt;中使用 Rails 路由的语法糖来设置路由。
例如：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;namespace&lt;/span&gt; &lt;span class="ss"&gt;:admin&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:posts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:comments&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;

&lt;p&gt;&lt;em&gt;欢迎大家挑错指正&lt;/em&gt;。&lt;/p&gt;

&lt;p&gt;项目地址：&lt;a href="https://github.com/winterbang/wow-route" rel="nofollow" target="_blank" title=""&gt;https://github.com/winterbang/wow-route&lt;/a&gt;&lt;/p&gt;</description>
      <author>winter</author>
      <pubDate>Tue, 15 May 2018 16:05:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/36781</link>
      <guid>https://ruby-china.org/topics/36781</guid>
    </item>
    <item>
      <title>Ruby 方法的执行结果默认为 “最后一条语句的结果”*3 (重要的事情要说三遍！)</title>
      <description>&lt;p&gt;如题所术，这是个没有人再以为它是真理的真理了，谁不知道啊！可我这个不长记性的，一个坑里滚了好多次了。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fn&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;arg&lt;/span&gt;
    &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;arg&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你猜结果是啥？好吧，可能就我不知道吧，还在这故弄玄虚。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;  
&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我理解的“最后一条语句”一直和 ruby 理解的“最后一条语句”不是同一个语句，思想还是有点感性，ruby 他说了：我返回的是最后一条语句，那就是最后一条，即使是 if 判断错误没有进入 if 块里，那 if 判断就是我的最后一条。🙏&lt;/p&gt;

&lt;p&gt;每次遇到要这样写的方法，都会扑通栽进这个坑里，发现问题后我每次都是这样解决的：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fn&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;arg&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;arg&lt;/span&gt;   
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然针对这个例子三目运算符就可以，但有时其中的逻辑并不是这么简单的啊，还有其他什么妙招吗？&lt;/p&gt;

&lt;p&gt;注：此贴目的主要有俩，1.在此立个碑，长个记性，以后不要再掉坑里了；2.破个处，我也算发过贴了，做了个爱噢贼（LZ）&lt;/p&gt;

&lt;p&gt;逗比结束！😄&lt;/p&gt;</description>
      <author>winter</author>
      <pubDate>Mon, 24 Aug 2015 18:56:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/27065</link>
      <guid>https://ruby-china.org/topics/27065</guid>
    </item>
  </channel>
</rss>
