<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>chinakr (chinakr)</title>
    <link>https://ruby-china.org/chinakr</link>
    <description>天道酬勤，厚德载物，知行合一</description>
    <language>en-us</language>
    <item>
      <title>Ruby 应用普遍存在的最大问题</title>
      <description>&lt;p&gt;Ruby 应用普遍存在的最大问题，就是功能太多、太复杂，导致对于用户学习曲线陡、学习时间长、难以全面掌握，对于开发者维护成本高、容易遇到升级引起的问题、容易烂尾。这一切的根源，归结起来，一是因为 Ruby 的表达能力太强、Ruby 程序员的开发效率太高，二是因为 Ruby 程序员欠缺“少就是美”的设计审美。&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Wed, 06 Nov 2019 11:02:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/39218</link>
      <guid>https://ruby-china.org/topics/39218</guid>
    </item>
    <item>
      <title>[已解决] 升级到 Mina 1.0 后遇到的奇怪问题</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;subl&lt;/span&gt; &lt;span class="no"&gt;Gemfile&lt;/span&gt;

    &lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="ss"&gt;:development&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'mina'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;group: :development&lt;/span&gt;
      &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'mina-puma'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;require: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;
      &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'mina-logs'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;require: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;bundle&lt;/span&gt;

&lt;span class="n"&gt;mina&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;

    &lt;span class="no"&gt;Mina&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="n"&gt;v1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;0.6&lt;/span&gt;

&lt;span class="n"&gt;subl&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;

    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/bundler'&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rails'&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/git'&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rvm'&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/puma'&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/logs'&lt;/span&gt;

    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'www.chejj.com.cn'&lt;/span&gt;
    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'deploy'&lt;/span&gt;
    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:deploy_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/home/deploy/www.chejj.com.cn/chejj'&lt;/span&gt;
    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:repository&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'git@github.com:chinakr/chejj.git'&lt;/span&gt;    &lt;span class="c1"&gt;# private repository&lt;/span&gt;
    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:branch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'master'&lt;/span&gt;

    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:shared_dirs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'log'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:shared_files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'config/database.yml'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'config/secrets.yml'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s1"&gt;'Set up environment.'&lt;/span&gt;
    &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rvm:use'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ruby-2.3.3@rails5'&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s1"&gt;'Prepare for deployment.'&lt;/span&gt;
    &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:setup&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'log'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'config'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'public/upload'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'tmp/pids'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'tmp/sockets'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{mkdir -p "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/shared/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;"}&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{chmod g+rx,u+rwx "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/shared/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;"}&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;

      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'config/database.yml'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'config/secrets.yml'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'config/puma.rb'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{touch "&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;deploy_to&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;/shared/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;"}&lt;/span&gt;
        &lt;span class="n"&gt;comment&lt;/span&gt; &lt;span class="sx"&gt;%{Be sure to edit 'shared/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sx"&gt;'.}&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s1"&gt;'Deploy current version to the server.'&lt;/span&gt;
    &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'git:clone'&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:link_shared_paths'&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'bundle:install'&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rails:db_migrate'&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rails:assets_precompile'&lt;/span&gt;
        &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:cleanup'&lt;/span&gt;

        &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="ss"&gt;:launch&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
          &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'puma:start'&lt;/span&gt;
          &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'puma:phased_restart'&lt;/span&gt;
        &lt;span class="k"&gt;end&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;mina&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;

    &lt;span class="n"&gt;mina&lt;/span&gt; &lt;span class="n"&gt;aborted!&lt;/span&gt;
    &lt;span class="no"&gt;NameError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;undefined&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;method&lt;/span&gt; &lt;span class="sb"&gt;`deploy_to' for main:Object
    Did you mean?  deploy
    /Users/chinakr/workspace/ruby/rails/chejj/config/deploy.rb:30:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
    /Users/chinakr/workspace/ruby/rails/chejj/config/deploy.rb:29:in `each'&lt;/span&gt;
    &lt;span class="sr"&gt;/Users/&lt;/span&gt;&lt;span class="n"&gt;chinakr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;workspace&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rails&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chejj&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`block in &amp;lt;top (required)&amp;gt;'
    /Users/chinakr/.rvm/gems/ruby-2.3.1@rails5/gems/mina-1.0.6/lib/mina/application.rb:16:in `&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="s1"&gt;'
    /Users/chinakr/.rvm/gems/ruby-2.3.1@rails5/gems/mina-1.0.6/bin/mina:4:in `&amp;lt;top (required)&amp;gt;'&lt;/span&gt;
    &lt;span class="sr"&gt;/Users/&lt;/span&gt;&lt;span class="n"&gt;chinakr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="vi"&gt;@rails5&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mina&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`load'
    /Users/chinakr/.rvm/gems/ruby-2.3.1@rails5/bin/mina:23:in `&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
    /Users/chinakr/.rvm/gems/ruby-2.3.1@rails5/bin/ruby_executable_hooks:15:in `eval'&lt;/span&gt;
    &lt;span class="sr"&gt;/Users/&lt;/span&gt;&lt;span class="n"&gt;chinakr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="vi"&gt;@rails5&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby_executable_hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`&amp;lt;main&amp;gt;'
    Tasks: TOP =&amp;gt; setup
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看错误提示是&lt;code&gt;deploy_to&lt;/code&gt;未定义，为什么呢？&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Wed, 01 Feb 2017 01:03:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/32220</link>
      <guid>https://ruby-china.org/topics/32220</guid>
    </item>
    <item>
      <title>Working with Mac</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/c5806369d1f505c0a7d3ddfd5b9fdedf.jpg" title="" alt="Working with Mac"&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS +  Sublime Text 3 + iTerm 2&lt;/li&gt;
&lt;li&gt;MacBook Pro Retina 15" + iPad mini 2 + iPad Pro 9.7"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;向&lt;a href="https://ruby-china.org/topics/30343" title=""&gt;dsh0416&lt;/a&gt;致敬，向我们&lt;a href="http://blog.renren.com/share/229448814/1946891567" rel="nofollow" target="_blank" title=""&gt;逝去的青春&lt;/a&gt;致敬！&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Sat, 25 Jun 2016 15:13:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/30367</link>
      <guid>https://ruby-china.org/topics/30367</guid>
    </item>
    <item>
      <title>用 Nginx + Puma + Mina 部署 Rails 应用程序</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/chinakr/programmer-notes/blob/master/ror/rails/rails-deploy-nginx-puma-mina.md" rel="nofollow" target="_blank"&gt;https://github.com/chinakr/programmer-notes/blob/master/ror/rails/rails-deploy-nginx-puma-mina.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;折腾了多时，写了一个总结帖。不知道其中是否有技术错误，还应该怎么优化？请大家指正。&lt;/p&gt;

&lt;p&gt;ps：国内要是有 Heroku 这样的服务多好 &amp;gt;_&amp;lt;&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Mon, 06 Jun 2016 11:39:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/30219</link>
      <guid>https://ruby-china.org/topics/30219</guid>
    </item>
    <item>
      <title>[北京外包项目] 3 天 3000 元，开发一个驾照科目一考试题库 (开源项目)</title>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;p&gt;项目需求：3 天时间，开发一个&lt;a href="http://m.jxedt.com/mnks/ckm1/" rel="nofollow" target="_blank" title=""&gt;驾照科目一考试题库&lt;/a&gt;的开源版本。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;功能需求&amp;amp;产品设计&amp;amp;数据来源：参考项目需求中的范例网站，1:1 复刻。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;关于美工：直接使用 Bootstrap 主题和组件。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;面向用户：iOS/Android 系统 5"/5.5"/10"屏幕设备用户。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;项目托管：&lt;a href="https://github.com/chinakr/kemuyi" rel="nofollow" target="_blank"&gt;https://github.com/chinakr/kemuyi&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;开发要求：Ruby 2.2，Rails 4.2，Bootstrap 3.3，MySQL 5.6&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;部署环境：Ubuntu Server 14.04，nginx，Puma&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;交付标准：1) 不打折扣地实现第 1、2 条；2) 源代码上传至 GitHub；3) 部署到阿里云 VPS(含完整题库图文数据，开箱即用)。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;后期维护：修复交付后两周内用户反馈的全部 Bug，针对每个 Bug 的维护开发、部署周期不超过 3 天。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;项目报酬：人民币 3000 元，微信支付或支付宝转帐。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;联系方式：chinakr@gmail.com (只能晚上回复)&lt;/p&gt;

&lt;p&gt;恳请各位大神出手相助~如有不当之处，还请谅解和指正~&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Mon, 12 Oct 2015 03:15:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/27635</link>
      <guid>https://ruby-china.org/topics/27635</guid>
    </item>
    <item>
      <title>MacBook Pro 15" Retina qt2 的键盘手感怎么这么差</title>
      <description>&lt;p&gt;偏硬，不如我老婆的 MacBook Air 手感好，比雷柏的 V500 更是差远了，有效降低了键盘输入体验
联想到之前在西单 Apple Store 试用 12" MacBook 时，敲击键盘就好像敲在桌面上的回忆
真是很担心适合码农的笔记本电脑未来会像曾经的 ThinkPad 一样灭绝&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Wed, 01 Jul 2015 14:55:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/26271</link>
      <guid>https://ruby-china.org/topics/26271</guid>
    </item>
    <item>
      <title>Wiki 中的 Ruby on Rails 实战圣经的链接该更新了</title>
      <description>&lt;p&gt;已有 Rails 4 版本：&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ihower.tw/rails4/" rel="nofollow" target="_blank"&gt;http://ihower.tw/rails4/&lt;/a&gt;&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Thu, 30 Oct 2014 23:52:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/22369</link>
      <guid>https://ruby-china.org/topics/22369</guid>
    </item>
    <item>
      <title>使用 nginx+Passenger 部署 Rails 应用出现 502 Bad Gateway 错误</title>
      <description>&lt;p&gt;Ruby 2.1.1 + Rails 4.1.1，使用 Capistrano 3.2.1 进行自动化部署。服务器是 Ubuntu Server 12.04 x64，采用 nginx + Passenger 的方案。配置过程如下：&lt;/p&gt;

&lt;p&gt;$ curl -L get.rvm.io | bash -s stable
    $ source ~/.bashrc
    $ rvm install 2.1
    $ rvm gemset create rails41
    $ rvm use 2.1@rails41
    $ gem install rails --verbose --no-ri --no-doc&lt;/p&gt;

&lt;p&gt;$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
    $ sudo aptitude install apt-transport-https ca-certificates&lt;/p&gt;

&lt;p&gt;$ sudo vim /etc/apt/sources.list.d/passenger.list
    deb &lt;a href="https://oss-binaries.phusionpassenger.com/apt/passenger" rel="nofollow" target="_blank"&gt;https://oss-binaries.phusionpassenger.com/apt/passenger&lt;/a&gt; precise main&lt;/p&gt;

&lt;p&gt;$ sudo chown root: /etc/apt/sources.list.d/passenger.list
    $ sudo chmod 600 /etc/apt/sources.list.d/passenger.list
    $ sudo aptitude update; sudo aptitude upgrade -y
    $ sudo aptitude install nginx-extras passenger&lt;/p&gt;

&lt;p&gt;$ sudo vim /etc/nginx/nginx.conf
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /home/haijia/.rvm/gems/ruby-2.1.2@rails41/wrappers/ruby;&lt;/p&gt;

&lt;p&gt;$ sudo vim /etc/nginx/sites-enabled/&lt;a href="http://www.haijia.org" rel="nofollow" target="_blank" title=""&gt;www.haijia.org&lt;/a&gt;
    server {
        listen 80;
        server_name &lt;a href="http://www.haijia.org" rel="nofollow" target="_blank" title=""&gt;www.haijia.org&lt;/a&gt;;
        root /var/www/haijia/current/public;
        passenger_enabled on;
        passenger_friendly_error_pages on;
    }&lt;/p&gt;

&lt;p&gt;$ sudo nginx -t
    $ sudo nginx&lt;/p&gt;

&lt;p&gt;访问&lt;a href="http://www.haijia.org/" rel="nofollow" target="_blank"&gt;http://www.haijia.org/&lt;/a&gt;提示需要运行&lt;code&gt;bundle install&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;$ cd /var/www/haijia/current/
    $ bundle install&lt;/p&gt;

&lt;p&gt;访问&lt;a href="http://www.haijia.org/" rel="nofollow" target="_blank"&gt;http://www.haijia.org/&lt;/a&gt;出现&lt;code&gt;502 Bad Gateway&lt;/code&gt;错误。&lt;/p&gt;

&lt;p&gt;$ sudo vim /var/log/nginx/error.log
    2014/07/13 00:22:50 [error] 3788#0: *35 upstream prematurely closed connection while reading response header from upstream, client: 123.12.12.123, server: &lt;a href="http://www.haijia.org" rel="nofollow" target="_blank" title=""&gt;www.haijia.org&lt;/a&gt;, request: "GET / HTTP/1.1", upstream: "passenger:/tmp/passenger.1.0.2988/generation-0/request:", host: "&lt;a href="http://www.haijia.org" rel="nofollow" target="_blank" title=""&gt;www.haijia.org&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;$ ls -s /var/www/haijia/current/log/production.log
    0 /var/www/haijia/current/log/production.log&lt;/p&gt;

&lt;p&gt;折腾了 1 天，还是找不到出错的原因和解决方法。中间也用&lt;code&gt;rvmsudo passenger-install-nginx-module&lt;/code&gt;方法安装过 nginx 和 Passenger，但错误是一样的。&lt;/p&gt;

&lt;p&gt;还望请各位前辈指点迷津！&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Sun, 13 Jul 2014 00:40:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/20462</link>
      <guid>https://ruby-china.org/topics/20462</guid>
    </item>
    <item>
      <title>小学电脑兴趣班——忆编程语言 “红白机” LOGO</title>
      <description>&lt;p&gt;最近在折腾 Swift，本来想抢先发一个入门指南，占个“先机”，没想到不过几日光景，已经是“千树万树梨花开”了。&lt;/p&gt;

&lt;p&gt;我的学习轨迹是这样的：Swift 编程语言 -&amp;gt; iOS 开发入门 (Xcode 开发环境、Cocoa Touch 开发框架) -&amp;gt; Objective-C 编程语言 -&amp;gt; Swift 实战开发教程 -&amp;gt; Swift 开源项目学习&lt;/p&gt;

&lt;p&gt;一开始根本没想到要接触这么多内容，但是在学习过程中发现，这些内容其实是环环相扣的。由于时间精力问题，到现在还只是浮光掠影，初窥门径，不禁慨叹“冯唐易老，李广难封”……白日梦醒，才发现一切归根结底都是选择问题。于是，又想起小学电脑兴趣班上，趴在中华学习机上输入 LOGO 程序的旧时光——LOGO 难道不正是编程语言中的“红白机”吗？&lt;/p&gt;

&lt;p&gt;“计算机要从娃娃抓起”，还是以一个尚在完善中的教程做为“老夫聊发少年狂”的一点记录吧：&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.haijia.org/logo/" rel="nofollow" target="_blank"&gt;http://www.haijia.org/logo/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;更新：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2014-06-29，更新大量示例代码。&lt;/li&gt;
&lt;li&gt;2014-06-15，加入 rLOGO 使用示例。&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>chinakr</author>
      <pubDate>Sat, 14 Jun 2014 21:53:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/19942</link>
      <guid>https://ruby-china.org/topics/19942</guid>
    </item>
    <item>
      <title>[北京] 中电长城网际系统应用有限公司招聘开发工程师</title>
      <description>&lt;p&gt;因业务发展需要，我司目前面向社会及各高校招聘全职员工。描述如下：&lt;/p&gt;

&lt;p&gt;职位：网络架构师、集成师 (技术)&lt;/p&gt;

&lt;p&gt;学历：全日制大学本科及以上学历&lt;/p&gt;

&lt;p&gt;专业：新闻传播学、社会学、信息学、统计学、情报学、数学、计算机等&lt;/p&gt;

&lt;p&gt;年龄：35 岁以下&lt;/p&gt;

&lt;p&gt;技能：至少熟练掌握一门外语，熟练各种办公软件、制图表软件等，具有良好的人际沟通和组织协调能力、良好的逻辑思维和分析判断能力、良好的写作能力；技术人员需要掌握网络架构、集成、运维相应技能。&lt;/p&gt;

&lt;p&gt;经验：2 年以上相关工作经验，具有相关资格证书的优先。&lt;/p&gt;

&lt;p&gt;薪资/津贴：基本工资 5k~12k/月，视能力和工作经验可面议。&lt;/p&gt;

&lt;p&gt;公司介绍：中电长城网际系统应用有限公司成立于 2012 年 7 月，是中国电子信息产业集团有限公司 (CEC) 控股的高科技国有企业，以服务国家基础信息网络和重要信息系统安全为使命，以面向国家重要信息系统的高端咨询和安全服务业务为主线，为用户提供信息安全的全方位的解决方案和相关服务。&lt;/p&gt;

&lt;p&gt;公司致力于建设全球领先的信息系统全生命周期安全服务体系。凭借在各个行业领域积累的丰富经验、广泛能力以及 CEC 集团完整的信息技术产业链，中电长城网际系统应用有限公司与客户携手合作，共同打造持续发展、卓越绩效的企业和政府。基于我们在安全咨询、安全技术及安全服务领域的专长，我们为客户制定“持续安全发展”战略，帮助他们成就卓越绩效，创造可持续的价值。借助独到的行业知识，精深的服务研究以及领先的技术能力，立足于商业和技术的前沿，为我们的客户量身订制解决方案，通过整合咨询规划和外包方面的协作能力，中电长城网际系统应用有限公司能够帮助客户实现全方位的业务创新以及持续改善，上至为客户设计安全战略规划，下至日常运营。&lt;/p&gt;

&lt;p&gt;公司与国内多家信息安全专业机构、国内外著名学术机构及行业领先企业均建立了良好的合作关系和战略联盟，组成了以国内知名专家为核心的专业人力资源团队，建立了一支活跃在信息安全领域，集管理、研发、技术服务、销售等多层面的复合型精英团队。公司拥有多名 CISP、CISSP、CMM、PMP、ITIL、CCIE 等资格认证的专业技术人员。我们的核心竞争力就在于拥有这样一支值得自豪的、专业的、具有战斗力的优秀团队，并持续为公司员工提供广阔的个人发展空间。&lt;/p&gt;

&lt;p&gt;简历投递邮箱：recruit@cecgw.cn&lt;/p&gt;

&lt;p&gt;注：代友发文，有问题及建议可直接通过邮箱和 hr 联系。&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Tue, 20 May 2014 12:15:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/19409</link>
      <guid>https://ruby-china.org/topics/19409</guid>
    </item>
    <item>
      <title>Programming for kids - 九九口诀表</title>
      <description>&lt;p&gt;幼儿园大班要求掌握 20 以内的加减法，于是给孩子打印了九九口诀表。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/chinakr/9x9" rel="nofollow" target="_blank"&gt;https://github.com/chinakr/9x9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;掌握了加法口诀表和减法口诀表之后，只要再掌握进位法则和借位法则，就可以轻松应对 20 以内的加减法了。&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Sat, 28 Dec 2013 22:53:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/16483</link>
      <guid>https://ruby-china.org/topics/16483</guid>
    </item>
    <item>
      <title>小米 1 频繁重启，周日到北京小米之家现场解决</title>
      <description>&lt;p&gt;去年底升级米 2，就把米 1 交给老婆当副机使用。和主机 iPhone4 相比，米 1 虽然外观欠佳，但是软件系统却有上佳表现，内置的来电地区显示、来电黑名单功能都非常实用。&lt;/p&gt;

&lt;p&gt;(中间略去数千字)&lt;/p&gt;

&lt;p&gt;整体感觉，小米之家模仿的是苹果天才吧的风格。虽然店面装修、软硬件设备、工作人员的经验等各个方面，相比之下都还有明显的差距，但是方向是对的，也能帮顾客实实在在地解决问题。如果能够坚持专注、极致、口碑、快，我相信小米之家的品牌很快也能建立起来。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geek.haijia.net.cn/mi/7" rel="nofollow" target="_blank"&gt;http://geek.haijia.net.cn/mi/7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;一句话：小米，中国硬件的良心，中国软件的未来，中国服务的希望！&lt;/p&gt;

&lt;p&gt;ThinkPad，你让我情何以堪！&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Sun, 04 Aug 2013 23:17:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/13046</link>
      <guid>https://ruby-china.org/topics/13046</guid>
    </item>
    <item>
      <title>我的第一个 Rails 项目：QQ 黑名单白名单系统</title>
      <description>&lt;h2 id="QQ黑名单白名单"&gt;QQ 黑名单白名单&lt;/h2&gt;
&lt;p&gt;QQ 黑名单白名单系统是一个由内部人员维护的 QQ 号黑名单和 QQ 号白名单。目标是帮助 QQ 群管理员识别发垃圾广告的 QQ 号和竞争对手的 QQ 号，从而保证 QQ 群的纯洁性和信息的安全性。&lt;/p&gt;

&lt;p&gt;QQ 黑名单白名单系统需要配合&lt;a href="https://github.com/chinakr/ooo" rel="nofollow" target="_blank" title=""&gt;内部人员认证系统&lt;/a&gt;使用。&lt;/p&gt;

&lt;p&gt;用户登录后可以实现：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;查询 QQ 号&lt;/li&gt;
&lt;li&gt;添加 QQ 号到黑名单&lt;/li&gt;
&lt;li&gt;添加 QQ 号到白名单&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;基本的信息包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QQ 号&lt;/li&gt;
&lt;li&gt;属性 (黑名单/白名单/未知)&lt;/li&gt;
&lt;li&gt;说明 (例如曾发布 XX 广告，是 XX 部门同事等)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;项目主页：&lt;a href="https://github.com/chinakr/qqlist" rel="nofollow" target="_blank"&gt;https://github.com/chinakr/qqlist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;不知社区中的各位好汉，你的第一个 Rails 项目是什么呢？&lt;/strong&gt;&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Thu, 01 Aug 2013 17:25:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/12983</link>
      <guid>https://ruby-china.org/topics/12983</guid>
    </item>
    <item>
      <title>[北京] 招募 PHP 和 Rails 双修的程序员一枚</title>
      <description>&lt;p&gt;2 年以上工作经验，喜爱编程，编码风格良好。&lt;/p&gt;

&lt;p&gt;工作方向为互联网 + 教育，工作地点为海淀黄庄。&lt;/p&gt;

&lt;p&gt;待遇为月薪 10k+，五险一金。&lt;/p&gt;

&lt;p&gt;btw：除 PHP 和 Rails 外，还需要熟悉 Linux 环境，有能力阅读并维护 Python(Django)、Go 语言程序 (等价于体力好 + 学习能力强)。&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Mon, 22 Jul 2013 13:37:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/12667</link>
      <guid>https://ruby-china.org/topics/12667</guid>
    </item>
    <item>
      <title>`rake doc:guides`出错</title>
      <description>&lt;p&gt;错误提示如下：&lt;/p&gt;

&lt;p&gt;$ rake doc:guides
    rake aborted!
    cannot load such file -- /home/chinakr/.rvm/gems/ruby-2.0.0-p247/gems/guides/rails_guides&lt;/p&gt;

&lt;p&gt;操作系统是 Linux Deepin 12.12。Ruby 和 Rails 是这样安装的：&lt;/p&gt;

&lt;p&gt;$ source ~/.rvm/scripts/rvm
    $ rvm install ruby 2.0.0
    $ rvm use 2.0.0 --default
    $ ruby -v
    ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
    $ gem install rails
    $ rails -v
    Rails 4.0.0&lt;/p&gt;

&lt;p&gt;问题是怎么产生的，如何解决呢？&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Fri, 19 Jul 2013 14:13:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/12614</link>
      <guid>https://ruby-china.org/topics/12614</guid>
    </item>
    <item>
      <title>Rails 4.0 应用程序的目录结构</title>
      <description>&lt;h2 id="应用程序根目录"&gt;应用程序根目录&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Gemfile&lt;/code&gt;：应用程序的依赖关系配置 (gem)。修改后通过&lt;code&gt;bundle install&lt;/code&gt;应用。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;README.rdoc&lt;/code&gt;：应用程序说明，建议包括所用的 Ruby 版本，依赖关系，必要的配置，如何创建数据库，如何初始化数据库，如何运行测试套件，需要配置的服务 (工作队列、缓存服务器、搜索引擎等)，如何部署，等等。&lt;/p&gt;
&lt;h2 id="config/ - 配置文件"&gt;
&lt;code&gt;config/&lt;/code&gt; - 配置文件&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;config/application.rb&lt;/code&gt;和&lt;code&gt;config/environment.rb&lt;/code&gt;：定制 Rails(覆盖默认惯例)，不常用。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;config/database.yml&lt;/code&gt;：数据库配置。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;config/routes.rb&lt;/code&gt;：URL 路由配置。&lt;/p&gt;
&lt;h3 id="config/environments/ - 应用程序环境配置"&gt;
&lt;code&gt;config/environments/&lt;/code&gt; - 应用程序环境配置&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;config/environments/development.rb&lt;/code&gt;：开发环境配置。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;config/environments/test.rb&lt;/code&gt;：测试环境配置。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;config/environments/production.rb&lt;/code&gt;：生产环境配置。&lt;/p&gt;
&lt;h3 id="config/initializers/ - 设置应用程序初始值"&gt;
&lt;code&gt;config/initializers/&lt;/code&gt; - 设置应用程序初始值&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;config/initializers/i18n.rb&lt;/code&gt;：国际化支持设置，包括默认区域 (locale) 设置，所支持的语言。&lt;/p&gt;
&lt;h3 id="config/locales/ - 区域设置"&gt;
&lt;code&gt;config/locales/&lt;/code&gt; - 区域设置&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;config/locales/en.yml&lt;/code&gt;：区域&lt;code&gt;en&lt;/code&gt;的设置，包括语言 (提示信息、模型名称)、货币。&lt;/p&gt;
&lt;h2 id="db/ - 数据库文件"&gt;
&lt;code&gt;db/&lt;/code&gt; - 数据库文件&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;db/schema.rb&lt;/code&gt;：自动生成的数据库结构，包括有哪些数据表、数据表有哪些字段、字段的类型和默认值等。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;db/seeds.rb&lt;/code&gt;：自定义的种子数据，通过&lt;code&gt;rake db:seed&lt;/code&gt;导入数据库。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;db/development.sqlite3&lt;/code&gt;：开发用 SQLite3 数据库。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;db/test.sqlite3&lt;/code&gt;：测试用 SQLite3 数据库。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;db/migrate/&lt;/code&gt;：数据迁移 (migration) 文件，通过&lt;code&gt;rake db:migrate&lt;/code&gt;应用，通过&lt;code&gt;rake db:rollback&lt;/code&gt;回滚。应用和回滚针对的都是最新的数据迁移 (最后创建的)。&lt;/p&gt;
&lt;h2 id="app/ - 应用程序主目录"&gt;
&lt;code&gt;app/&lt;/code&gt; - 应用程序主目录&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;app/models/&lt;/code&gt;：模型文件 (model)。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app/views/&lt;/code&gt;：视图文件 (view)。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app/controllers/&lt;/code&gt;：控制器文件 (controller)。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app/helpers/&lt;/code&gt;：视图和控制器的帮助方法文件 (helper)。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app/assets/&lt;/code&gt;：静态资源文件。包括 CSS(&lt;code&gt;app/assets/stylesheets/&lt;/code&gt;)、JavaScript(&lt;code&gt;app/assets/javascripts/&lt;/code&gt;) 和图片 (&lt;code&gt;app/assets/images/&lt;/code&gt;)。&lt;/p&gt;
&lt;h2 id="test/ - 测试文件"&gt;
&lt;code&gt;test/&lt;/code&gt; - 测试文件&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;test/test_helper.rb&lt;/code&gt;：测试的帮助方法 (helper)。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test/models/&lt;/code&gt;：模型的单元测试文件。例如&lt;code&gt;test/models/product_test.rb&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test/controllers/&lt;/code&gt;：控制器的功能测试文件。例如&lt;code&gt;test/controllers/products_controller_test.rb&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test/integration/&lt;/code&gt;：使用流程的集成测试文件。例如&lt;code&gt;test/integration/user_stories_test.rb&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test/fixtures/&lt;/code&gt;：测试夹具文件 (fixture)。例如&lt;code&gt;test/fixtures/products.yml&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test/helpers/&lt;/code&gt;：测试帮助方法的测试文件。例如&lt;code&gt;test/helpers/products_helper_test.rb&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="lib/ - 库文件"&gt;
&lt;code&gt;lib/&lt;/code&gt; - 库文件&lt;/h2&gt;
&lt;p&gt;不适合放在模型、视图、控制器中的程序代码，常用的公共功能等。可以建立子目录，并把功能相关的代码文件可以放在同一个子目录下。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lib/tasks/&lt;/code&gt;：自定义 Rake 任务文件。定义后可以用&lt;code&gt;rake db:task_name&lt;/code&gt;执行。&lt;/p&gt;
&lt;h2 id="vendor/ - 第三方库文件"&gt;
&lt;code&gt;vendor/&lt;/code&gt; - 第三方库文件&lt;/h2&gt;
&lt;p&gt;安装的插件就放在这里。&lt;/p&gt;
&lt;h2 id="public/ - 静态文件"&gt;
&lt;code&gt;public/&lt;/code&gt; - 静态文件&lt;/h2&gt;
&lt;p&gt;包括&lt;code&gt;robots.txt&lt;/code&gt;、&lt;code&gt;favicon.ico&lt;/code&gt;、&lt;code&gt;404.html&lt;/code&gt;和&lt;code&gt;500.html&lt;/code&gt;等。&lt;/p&gt;
&lt;h2 id="log/ - 日志文件"&gt;
&lt;code&gt;log/&lt;/code&gt; - 日志文件&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;log/development.log&lt;/code&gt;：开发环境日志文件。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;log/test.log&lt;/code&gt;：测试环境日志文件。&lt;/p&gt;
&lt;h2 id="bin/ - 可执行文件"&gt;
&lt;code&gt;bin/&lt;/code&gt; - 可执行文件&lt;/h2&gt;
&lt;p&gt;常用命令&lt;code&gt;rails&lt;/code&gt;、&lt;code&gt;rake&lt;/code&gt;、&lt;code&gt;bundle&lt;/code&gt;的可执行文件都在这里。&lt;/p&gt;
&lt;h2 id="doc/ - 文档"&gt;
&lt;code&gt;doc/&lt;/code&gt; - 文档&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;doc/api/index.html&lt;/code&gt;：Rails 参考文档 (API reference)，通过&lt;code&gt;rake doc:rails&lt;/code&gt;生成。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;doc/app/index.html&lt;/code&gt;：应用程序文档 (源代码索引)，通过&lt;code&gt;rake doc:app&lt;/code&gt;生成。&lt;/p&gt;
&lt;h2 id="tmp/ - 临时文件"&gt;
&lt;code&gt;tmp/&lt;/code&gt; - 临时文件&lt;/h2&gt;
&lt;p&gt;包括应用程序运行过程中生成的 pid、socket、session 和缓存文件。&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Fri, 19 Jul 2013 11:32:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/12609</link>
      <guid>https://ruby-china.org/topics/12609</guid>
    </item>
    <item>
      <title>刚把 Depot 的例子过了一遍</title>
      <description>&lt;p&gt;脖子也酸了，手指也疼了...&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Thu, 18 Jul 2013 17:54:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/12592</link>
      <guid>https://ruby-china.org/topics/12592</guid>
    </item>
    <item>
      <title>为什么 Ruby China 是国内人气最高的程序员社区呢</title>
      <description>&lt;p&gt;CPyUG 都不如这里，为什么呢？？&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Wed, 03 Jul 2013 14:17:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/12208</link>
      <guid>https://ruby-china.org/topics/12208</guid>
    </item>
    <item>
      <title>Rails 4.0 发布了！有深圳的网络公司招产品经理吗？</title>
      <description>&lt;p&gt;北大一今年毕业的师弟，目前在百度做产品经理，去年底就开始在百度实习。&lt;/p&gt;

&lt;p&gt;现在因为女朋友的关系，希望&lt;strong&gt;马上&lt;/strong&gt;去深圳发展。&lt;/p&gt;

&lt;p&gt;求职意向：深圳互联网公司的产品经理方向。&lt;/p&gt;

&lt;p&gt;小伙子和 nice，很有活力，学习能力很强，是有理想有时间有精力有干劲的四有青年。&lt;/p&gt;

&lt;p&gt;求推荐，希望借 Rails 4.0 发布的东风，帮助师弟成全小小心愿^^&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Wed, 26 Jun 2013 09:41:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/11995</link>
      <guid>https://ruby-china.org/topics/11995</guid>
    </item>
    <item>
      <title>我的世界将是一个 RPG 的世界</title>
      <description>&lt;p&gt;大家知道 RPG 是什么吗^^&lt;/p&gt;</description>
      <author>chinakr</author>
      <pubDate>Mon, 24 Jun 2013 13:43:58 +0800</pubDate>
      <link>https://ruby-china.org/topics/11950</link>
      <guid>https://ruby-china.org/topics/11950</guid>
    </item>
  </channel>
</rss>
