<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>uestc_bird (一只飞翔的鸟儿)</title>
    <link>https://ruby-china.org/uestc_bird</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>为什么我的 Gemfile.lock 文件总是变？</title>
      <description>&lt;p&gt;什么都没做，没执行 bundle install，这个文件总是变，checkout -f 没几分钟又会变化&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;On&lt;/span&gt; &lt;span class="n"&gt;branch&lt;/span&gt; &lt;span class="n"&gt;develop&lt;/span&gt;
&lt;span class="no"&gt;Your&lt;/span&gt; &lt;span class="n"&gt;branch&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="s1"&gt;'origin/develop'&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="no"&gt;Changes&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;staged&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;commit:
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="s2"&gt;"git add &amp;lt;file&amp;gt;..."&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt; &lt;span class="n"&gt;what&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;committed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="s2"&gt;"git checkout -- &amp;lt;file&amp;gt;..."&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;discard&lt;/span&gt; &lt;span class="n"&gt;changes&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;working&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="ss"&gt;modified:   &lt;/span&gt;&lt;span class="no"&gt;Gemfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lock&lt;/span&gt;

&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;changes&lt;/span&gt; &lt;span class="n"&gt;added&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;commit&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="s2"&gt;"git add"&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt;&lt;span class="sr"&gt;/or "git commit -a")
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Wed, 17 Aug 2016 09:50:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/30832</link>
      <guid>https://ruby-china.org/topics/30832</guid>
    </item>
    <item>
      <title>Ruby 类的问题</title>
      <description>&lt;p&gt;String.class   #=&amp;gt; Class,        String 是 Class 类的一个实例；
Module.class   #=&amp;gt; Class,      Module 是 Class 类的一个实例；
Class.class   #=&amp;gt;   Class，Class 是 Class 类的一个实例？？？？&lt;/p&gt;

&lt;p&gt;现象一：
Class.superclass  #=&amp;gt; Module
释义：Class 类的父类是 Module，既，Class 继承于 Module，或者说 Class 类是 Module 类的子类&lt;/p&gt;

&lt;p&gt;现象二：
Module.class   #=&amp;gt; Class
释义：Module 类是 Class 类的一个实例&lt;/p&gt;

&lt;p&gt;鸡生蛋，蛋生鸡问题？一条蟒蛇咬住了自己的尾巴？请指教&lt;/p&gt;

&lt;p&gt;补充一点吧：我很想弄清楚这其中的机制，就是 how it works？有没有什么书或者资料可以推荐学习一下的（研究源码除外），元编程只是说了现象，没有解释原因。
像 C++、python 这些语言，有很多的资料可以去了解他们，不仅解释了现象，也解释了现象背后的原因，概念清晰，顺理成章。&lt;/p&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Fri, 15 Jul 2016 10:56:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/30537</link>
      <guid>https://ruby-china.org/topics/30537</guid>
    </item>
    <item>
      <title>Rails 环境下 puts 的内容去向问题</title>
      <description>&lt;p&gt;小白问题。。。。。。。。&lt;img title=":grin:" alt="😁" src="https://twemoji.ruby-china.com/2/svg/1f601.svg" class="twemoji"&gt; 
resque 下的任务全部失败了，查了日子，发现全部是报这个错误，请问这个是什么原因？
&lt;img src="https://l.ruby-china.com/photo/2016/29accacfafbdff721e80c8600927c2f0.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Tue, 12 Jul 2016 09:51:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/30503</link>
      <guid>https://ruby-china.org/topics/30503</guid>
    </item>
    <item>
      <title>请教一下关于 Rails 加载的问题</title>
      <description>&lt;p&gt;rails 只是一堆代码，并不能独立运行，必须有其他的进程来讲 rails 的代码“加载”起来
例如 passenger 在启动的时候就会加载 rails 的代码，这个加载时啥意思？能具体解释一下吗？
是把 rails 的代码都读入内存？全部代码？
我知道 rails 的加载其实就是在初始化一些 contants，把所有的模块、类等的常量的名字读入自己的内存空间而已
那么既然其他程序把 rails 的代码加载进内存了，是不是就可以把 rails 工作目录删除也没啥问题？（这个当然不行~~~~~）&lt;/p&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Mon, 11 Jul 2016 15:19:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/30498</link>
      <guid>https://ruby-china.org/topics/30498</guid>
    </item>
    <item>
      <title>Unicorn 是用 Ruby 写的？</title>
      <description>&lt;p&gt;大家目前选的 http server 都有哪些？除了 unicorn 之外&lt;/p&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Fri, 24 Jun 2016 17:41:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/30364</link>
      <guid>https://ruby-china.org/topics/30364</guid>
    </item>
    <item>
      <title>�Ruby 的实例变量的 scope</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;A&lt;/span&gt;
  &lt;span class="vi"&gt;@i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hi"&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;say&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="vi"&gt;@i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&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;ins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
&lt;span class="n"&gt;ins&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;say&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt; ins.say 的输出是什么？&lt;/li&gt;
&lt;li&gt;实例变量&lt;a href="/i" class="user-mention" title="@i"&gt;&lt;i&gt;@&lt;/i&gt;i&lt;/a&gt;的 scope 是什么？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Tue, 10 May 2016 18:33:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/29971</link>
      <guid>https://ruby-china.org/topics/29971</guid>
    </item>
    <item>
      <title>resque-scheduler, 新加了一个 cron 任务，不生效</title>
      <description>&lt;p&gt;检查了语法没有问题，resque worker 也是正常的，其他的定时任务也正常运行，就新加的任务不能被调度，手动执行 resque 一次这个任务也是正常，请问谁遇到过这种情况？&lt;/p&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Thu, 05 May 2016 10:56:47 +0800</pubDate>
      <link>https://ruby-china.org/topics/29913</link>
      <guid>https://ruby-china.org/topics/29913</guid>
    </item>
    <item>
      <title>请教 Rails 的是怎样运行起来的？</title>
      <description>&lt;p&gt;目前典型的 rails 服务器的构成都是这样一种模型：
Nginx(web server)  ----&amp;gt;  Passenger/unicorn/puma等(app server) -----&amp;gt;  rails(App)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Nginx 服务器一般是用来作为反向代理以及负载均衡来使用的，它是一个单独的进程（相对于 os 来说），能够监听在某个端口上，提供 http 的 request/response 服务，当 nginx 服务器接收到一个 http 请求的时候，会立马转发给下一层的服务器，例如 passenger，将这个请求原封不动的转给 passenger, 他们之间的通信一般用的是 socket；&lt;/li&gt;
&lt;li&gt;Passenger 服务器，独立运行在操作系统的环境下，启动之后，在 OS 里面可以查看到其 Pid，典型的服务器模型（被启动之后，初始设置完成后，监听在某个端口，进入 while true 死循环来处理请求，当一个 http 请求到来的时候，passenger 服务器会将这个请求转发给一个 worker 进程来处理这个请求，passenger 这个服务器是由很多个进程组成的，这些进程共同实现了服务器的基本功能-----转发请求，等待回应，将 rsponse 转发给上层的 nginx 服务器；&lt;/li&gt;
&lt;li&gt;当 worker 将请求转发给 rails 处理的时候......就不明白了。。。。。。。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;问题：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;rails 是怎样运行起来的？是个单独的进程吗？是个服务器模型的进程吗？如果是个单独的进程，那么它是怎么样运行起来的？里面有个 while true 之类的死循环来检测事件的到来以便处理吗？&lt;/li&gt;
&lt;li&gt;rails 直接面对的是 passenger 之类的中间层服务器，他们是怎样进行数据通信的？passenger 是怎么样把自己的请求转发给 rails 的？rack？&lt;/li&gt;
&lt;li&gt;rack？rack 是个常住进程吗？为什么 rack 这个接口规范却可以传递数据？怎样做到的？&lt;/li&gt;
&lt;li&gt;passenger 在启动 worker 进程的时候，会把 rails 加载到 worker 的进程空间里面，怎么做到的？&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;补充：
我们其实完全不用这么麻烦，用那么多的中间件一起来构成一个 Web server。也可以完全使用纯的 ruby 来实现一个 web server：自己启动之后，监听在一个端口上面，等待 http 请求的到来，解析 http，自己处理，然后回复。这样的话，这个用纯 ruby 写成的 web server 在操作系统的眼里就是一个普通的进程而已。那么 rails 这个框架，从操作系统的角度看，它是什么呢？&lt;/p&gt;</description>
      <author>uestc_bird</author>
      <pubDate>Fri, 15 Apr 2016 11:59:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/29720</link>
      <guid>https://ruby-china.org/topics/29720</guid>
    </item>
  </channel>
</rss>
