<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>tablecell (tablecell)</title>
    <link>https://ruby-china.org/tablecell</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title> Rack::Builder.map 为什么不起作用</title>
      <description>&lt;p&gt;app.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Hook&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;included&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;DSLMethod&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"PATH_INFO"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"200"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"text/html"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Hello, %s via %s"&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;]]]&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;DSLMethod&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extended&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="n"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;instance_exec&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="vi"&gt;@builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
        &lt;span class="vi"&gt;@builder.run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="vi"&gt;@builder.use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;"maped "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;
      &lt;span class="vi"&gt;@builder.map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&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="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Admin&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Hook&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Main&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Hook&lt;/span&gt;
  &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="s2"&gt;"/admin"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="no"&gt;Admin&lt;/span&gt;
    &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="no"&gt;Admin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;config.ru&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require './app.rb'
run Main.new
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;想实现以 admin 开始的都由 class Admin 来处理  但是实际上都是 class Main 处理，Rack::Builder.map 不起作用&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Sat, 06 Jul 2024 14:35:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/43799</link>
      <guid>https://ruby-china.org/topics/43799</guid>
    </item>
    <item>
      <title>define_method 调用 yield 报错</title>
      <description>&lt;p&gt;test.rb&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;test1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;  &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#  puts   block&lt;/span&gt;
&lt;span class="c1"&gt;#  block.call&lt;/span&gt;
  &lt;span class="k"&gt;yield&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;define_method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:test2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="c1"&gt;#  puts  block&lt;/span&gt;
&lt;span class="c1"&gt;#  block.call&lt;/span&gt;
  &lt;span class="k"&gt;yield&lt;/span&gt;  &lt;span class="c1"&gt;#if block_given?&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;test1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"test1"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;test2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"test2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用字面量定义正常调用 yield，同样的代码换成 define_method 就报错 而且不同版本报错不一样&lt;/p&gt;

&lt;p&gt;ruby27 以上报错 Invalid yield (SyntaxError)&lt;/p&gt;

&lt;p&gt;ruby27 以下报错  no  block given (yield) (LocalJumpError)  但是 test2 明明传了 block 的&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Wed, 03 Jul 2024 14:11:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/43795</link>
      <guid>https://ruby-china.org/topics/43795</guid>
    </item>
    <item>
      <title>有建康码的查询接口 API 吗？　　</title>
      <description>&lt;p&gt;据说新推出的数字货币是跟建康码绑定的 如果不建康的话挣了钱会不会花不出去？&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Wed, 08 Dec 2021 17:25:32 +0800</pubDate>
      <link>https://ruby-china.org/topics/41960</link>
      <guid>https://ruby-china.org/topics/41960</guid>
    </item>
    <item>
      <title>fleet 用的是什么界面库</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/9b3df5d8-f005-47cd-aba0-6f2b18141c2a.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Wed, 01 Dec 2021 14:46:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/41944</link>
      <guid>https://ruby-china.org/topics/41944</guid>
    </item>
    <item>
      <title>electron 是不是就是无头浏览器?</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/5fe6859f-24be-4841-b181-0fead42c6546.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/qier222/YesPlayMusic" rel="nofollow" target="_blank"&gt;https://github.com/qier222/YesPlayMusic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cuiocean/ZY-Player" rel="nofollow" target="_blank"&gt;https://github.com/cuiocean/ZY-Player&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;直接做个网站不香吗？为什么要一个网站一个 60m 无头浏览器这种模式，硬盘太大的原因吗？&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Mon, 15 Nov 2021 10:54:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/41883</link>
      <guid>https://ruby-china.org/topics/41883</guid>
    </item>
    <item>
      <title>996 秒变 1075</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/16b6e5b1-659e-437b-a9f9-f98c493267f9.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;from &lt;a href="https://m.sohu.com/a/498545818_639898" rel="nofollow" target="_blank"&gt;https://m.sohu.com/a/498545818_639898&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5 年前够烂码农因为延长工作时间多涨薪 10w 买了房，现在调整工作时间薪水减少 10w 相应的房贷是不是也应该同比例减少才能维持原来的生活水平  不然够烂码农月入 8w 将活得很煎难&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Tue, 02 Nov 2021 20:36:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/41837</link>
      <guid>https://ruby-china.org/topics/41837</guid>
    </item>
    <item>
      <title>Migrations are pending</title>
      <description>&lt;p&gt;status  500
error   "Internal Server Error"
exception   "#&amp;lt;ActiveRecord::PendingMigrationError: &lt;/p&gt;

&lt;p&gt;Migrations are pending. To resolve this issue, run:&lt;/p&gt;

&lt;p&gt;bin/rails db:migrate RAILS_ENV=development&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;执行 &lt;code&gt;bin/rails db:migrate RAILS_ENV=development&lt;/code&gt; 提示   SQLite3::SQLException: table "xxtable" already exists:&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Sun, 31 Oct 2021 10:47:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/41826</link>
      <guid>https://ruby-china.org/topics/41826</guid>
    </item>
    <item>
      <title>用 lambda 计算房价</title>
      <description>&lt;p&gt; &lt;img src="https://l.ruby-china.com/photo/tablecell/3434080a-21e5-4d87-b149-b0f9d6859e9f.png!large" title="" alt=""&gt;
 price 是名义房价 (就是平常中介店面看到的，千年雷打不动) ratio 是税率 x 是房龄&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Fri, 22 Oct 2021 10:47:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/41788</link>
      <guid>https://ruby-china.org/topics/41788</guid>
    </item>
    <item>
      <title>jQuery 可以给 checkbox array 设置 checked 吗？</title>
      <description>&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;'utf-8'&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; 
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;" https://libs.baidu.com/jquery/2.1.4/jquery.min.js"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

                                &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"es[]"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"es4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;es4
                                &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"es[]"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"es5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;es5
                                &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"es[]"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"es6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;es6 

                                &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;  &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"send"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;

&lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
 &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;es&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;es5&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;es6&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;

 &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input:checkbox[name="es[]"][value="&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;es&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;"]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;prop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;checked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;

 &lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>tablecell</author>
      <pubDate>Wed, 13 Oct 2021 11:28:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/41763</link>
      <guid>https://ruby-china.org/topics/41763</guid>
    </item>
    <item>
      <title>解铃还需系铃人</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/1a771667-36d6-48fd-b26a-dd71302c1436.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;from &lt;a href="https://m.sohu.com/a/494410660_162758" rel="nofollow" target="_blank"&gt;https://m.sohu.com/a/494410660_162758&lt;/a&gt;&lt;br&gt;
以前是女人无房不嫁，然后房子涨价，买了房的不仅要月月还房贷，一想孩子一出生就得要攒钱准备房款吓得腿都软了，没买房的倒是想生但是没女人愿意嫁，典型的有主张没办法。最后导致出生人口断崖式下跌，这下好了，只要多生孩子就配房子 &lt;code&gt;def house(children)&lt;/code&gt;，再也不用担心无房不嫁了，终于可以放心大胆地生了&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Mon, 11 Oct 2021 19:48:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/41755</link>
      <guid>https://ruby-china.org/topics/41755</guid>
    </item>
    <item>
      <title>Sequel Migration 指北</title>
      <description>&lt;p&gt;首先安装 sequel &lt;/p&gt;

&lt;p&gt;&lt;code&gt;gem install  sequel -NV&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;sequel 的 migration 类似 Rakefile 执行 task 不用生成类文件 &lt;/p&gt;

&lt;p&gt;migration 文件命名规则有两种方式 &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;001_xxx.rb &lt;/li&gt;
&lt;li&gt;timestamp_xxx.rb &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;第一种按 i++ 递增 可以 1-9 或者 01-99 一般 999 以内应该够了&lt;/p&gt;

&lt;p&gt;第二种按以时间戳递增 跟 rails 类似 &lt;/p&gt;

&lt;p&gt;xxx 是可以是任意的文件名
这里以用 Sequel 开发招聘网站为例介绍第一种 &lt;/p&gt;

&lt;p&gt;新建 migration 目录存放迁移文件&lt;/p&gt;

&lt;p&gt;&lt;code&gt;md mig&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;新建 migration 文件 
招聘需要发布标题 需要 title 字段&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vi  mig/001_+title.rb&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;migration&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;change&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;create_table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:jobs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;primary_key&lt;/span&gt; &lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;unique: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
      &lt;span class="no"&gt;String&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;null: &lt;/span&gt;&lt;span class="kp"&gt;false&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行 migration&lt;br&gt;
&lt;code&gt;sequel   -m mig  sqlite://jobs.db&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;其中 -m 参数是指 migration 目录 后面跟 数据库 dsn &lt;/p&gt;

&lt;p&gt;招聘需要有接收简历的邮箱  再增加一个字段 email &lt;/p&gt;

&lt;p&gt;&lt;code&gt;vi mig/002_+email.rb&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;migration&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;change&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;add_column&lt;/span&gt; &lt;span class="ss"&gt;:jobs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;String&lt;/span&gt; 
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;格式也很好记
外层不变 migration do/change do (复制粘贴即可)&lt;br&gt;
里层      action  :表名， :字段名，数据类型&lt;/p&gt;

&lt;p&gt;action 也是简单的动宾结构 add/drop/rename _ column/index/view &lt;/p&gt;

&lt;p&gt;招聘需要发布薪资 再增加一个字段 salary &lt;/p&gt;

&lt;p&gt;&lt;code&gt;vi mig/003_+salary.rb&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;migration&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;change&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;add_column&lt;/span&gt; &lt;span class="ss"&gt;:jobs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;Integer&lt;/span&gt; 
  &lt;span class="k"&gt;end&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;可以把原来的 salary 删除  用 drap_column 然后用  add_column 再新增两个 &lt;/p&gt;

&lt;p&gt;或者 用改名 这里用改名 rename_column &lt;/p&gt;

&lt;p&gt;&lt;code&gt;vi mig/004_salary!salarybase.rb&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;migration&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;change&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;rename_column&lt;/span&gt; &lt;span class="ss"&gt;:jobs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:salarybase&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再增加一个 salarytop&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vi mig/005_+salarytop.rb&lt;/code&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;migration&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;change&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;add_column&lt;/span&gt; &lt;span class="ss"&gt;:jobs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:salarytop&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;Integer&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果想回滚 直接 用-M 指定序号 
比如 &lt;/p&gt;

&lt;p&gt;&lt;code&gt;sequel -m mig -M  001  sqlite://jobs.db&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;就回到初始建表的状态 &lt;/p&gt;

&lt;p&gt;&lt;code&gt;sequel -m mig -M  005  sqlite://jobs.db&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;就直接到从 001 执行到 005 &lt;/p&gt;

&lt;p&gt;-M 执行的过程很象看片来回拖进度条&lt;/p&gt;

&lt;p&gt;记住 -m -M 两个参数就能执行大部分常用的操作了&lt;/p&gt;

&lt;p&gt;更多用法参数参考 
&lt;a href="https://github.com/jeremyevans/sequel/blob/master/doc/schema_modification.rdoc" rel="nofollow" target="_blank"&gt;https://github.com/jeremyevans/sequel/blob/master/doc/schema_modification.rdoc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;sequel + rack 做的招聘网站
&lt;a href="https://github.com/tablecell/myrack" rel="nofollow" target="_blank"&gt;https://github.com/tablecell/myrack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;别人安装 gem 的时间，用 sequel 已经把网站做好了&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/fcd57b87-4fe0-421a-8e07-38d4c9cf54bf.jpg!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Tue, 05 Oct 2021 22:17:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/41741</link>
      <guid>https://ruby-china.org/topics/41741</guid>
    </item>
    <item>
      <title>proc 中可以改变外部变量的值吗？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_proc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;proc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;
 &lt;span class="c1"&gt;#   proc.call count&lt;/span&gt;
  &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;tap&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;
    &lt;span class="nb"&gt;proc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;
    &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;myproc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Proc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;param&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;

  &lt;span class="s2"&gt;"balabala"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;call_proc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myproc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;除了 proc 最后返回一个包含 param 的 array  还有其他方法吗？ &lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Mon, 04 Oct 2021 11:15:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/41739</link>
      <guid>https://ruby-china.org/topics/41739</guid>
    </item>
    <item>
      <title>在 block 中怎么访问到类的  attr_accessor ？</title>
      <description>&lt;p&gt;app.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"rack"&lt;/span&gt;

&lt;span class="n"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Handler&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;WEBrick&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Base&lt;/span&gt;
  &lt;span class="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:route&lt;/span&gt;
  &lt;span class="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:req&lt;/span&gt;

  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;route&lt;/span&gt;
      &lt;span class="vi"&gt;@route&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;Hash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"get"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{}]&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;request&lt;/span&gt;
      &lt;span class="vi"&gt;@req&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;newrequest&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 这个 env 参数只能从 rackapp 的 call 中才能获取 &lt;/span&gt;
      &lt;span class="vi"&gt;@req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="vi"&gt;@req.params&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;route&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;block&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="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyApp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;inspect&lt;/span&gt;
    &lt;span class="s2"&gt;"access request"&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;class&lt;/span&gt; &lt;span class="nc"&gt;RackApp&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# req = Rack::Request.new(env)&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"PATH_INFO"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;method&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"REQUEST_METHOD"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;downcase&lt;/span&gt;
    &lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;newrequest&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;
    &lt;span class="n"&gt;cb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;route&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;method&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cb&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"text/html"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&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;handler&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt; &lt;span class="no"&gt;RackApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;ruby app.rb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:8080/?ruby=rails" rel="nofollow" target="_blank"&gt;http://localhost:8080/?ruby=rails&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;self.newquest 里面 可以打印参数
self.request 中打印参数是 nil &lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Mon, 27 Sep 2021 21:24:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/41721</link>
      <guid>https://ruby-china.org/topics/41721</guid>
    </item>
    <item>
      <title>Vue 代码是开源的随便用，但是文档有版权，不可擅自部署</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/0a450b10-587b-4d2d-b26b-b9c418bdd081.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;from &lt;a href="https://zhuanlan.zhihu.com/p/412892005" rel="nofollow" target="_blank"&gt;https://zhuanlan.zhihu.com/p/412892005&lt;/a&gt;&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Sun, 26 Sep 2021 20:27:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/41717</link>
      <guid>https://ruby-china.org/topics/41717</guid>
    </item>
    <item>
      <title>元编程是用 eval 实现的吗？</title>
      <description>&lt;p&gt;通过各种 &lt;code&gt;xxx_eval&lt;/code&gt; 动态生成类和方法 
然后用接收的参数 Cls.send  :XXmethod 调用&lt;/p&gt;

&lt;p&gt;代码里只有接收参数，类和方法都是 transparent  代码看起来很简洁&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Fri, 24 Sep 2021 09:40:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/41709</link>
      <guid>https://ruby-china.org/topics/41709</guid>
    </item>
    <item>
      <title>重点二线城市招人难</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/1b965be1-9b5c-41e9-acdd-c2bbc8aab5b1.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;from &lt;a href="https://www.sohu.com/a/491148521_220095" rel="nofollow" target="_blank"&gt;https://www.sohu.com/a/491148521_220095&lt;/a&gt;&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Tue, 21 Sep 2021 21:13:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/41705</link>
      <guid>https://ruby-china.org/topics/41705</guid>
    </item>
    <item>
      <title>5 分钟用 sequel 开发 blog</title>
      <description>&lt;p&gt;安装 gems&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;sequel &lt;span class="nt"&gt;-NV&lt;/span&gt; 
gem &lt;span class="nb"&gt;install &lt;/span&gt;ramaze &lt;span class="nt"&gt;-NV&lt;/span&gt; 
gem &lt;span class="nb"&gt;install &lt;/span&gt;maruku &lt;span class="nt"&gt;-NV&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;初始化建表 db.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"sequel"&lt;/span&gt;

&lt;span class="no"&gt;DB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqlite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"myblog.db"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="no"&gt;DB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:blog&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;primary_key&lt;/span&gt; &lt;span class="ss"&gt;:id&lt;/span&gt;
    &lt;span class="no"&gt;String&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;
    &lt;span class="no"&gt;Text&lt;/span&gt; &lt;span class="ss"&gt;:content&lt;/span&gt;
    &lt;span class="no"&gt;DateTime&lt;/span&gt; &lt;span class="ss"&gt;:ctime&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写业务代码 
app.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'ramaze'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"sequel"&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'maruku'&lt;/span&gt;

&lt;span class="no"&gt;DB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Sequel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqlite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"myblog.db"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BlogController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Ramaze&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Controller&lt;/span&gt;
  &lt;span class="n"&gt;engine&lt;/span&gt; &lt;span class="ss"&gt;:haml&lt;/span&gt;
  &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="s2"&gt;"/blog"&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt;
     &lt;span class="n"&gt;render_view&lt;/span&gt; &lt;span class="ss"&gt;:new&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;Ramaze&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动 &lt;/p&gt;

&lt;p&gt;&lt;code&gt;ruby  app.rb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;建模板目录&lt;/p&gt;

&lt;p&gt;&lt;code&gt;md view/blog&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;发表博客的页面&lt;/p&gt;

&lt;p&gt;view/blog/new.haml&lt;/p&gt;
&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="nn"&gt;!!!
&lt;/span&gt;&lt;span class="nt"&gt;%html&lt;/span&gt;
  &lt;span class="nt"&gt;%head&lt;/span&gt;
    &lt;span class="nt"&gt;%meta&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;charset: &lt;/span&gt;&lt;span class="s2"&gt;"utf-8"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;%link&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;href: &lt;/span&gt;&lt;span class="s2"&gt;"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;rel: &lt;/span&gt;&lt;span class="s2"&gt;"stylesheet"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;%body&lt;/span&gt;
    &lt;span class="nc"&gt;.container&lt;/span&gt;
      &lt;span class="nc"&gt;.row&lt;/span&gt;
        &lt;span class="nc"&gt;.col-md-12&lt;/span&gt;
          &lt;span class="nt"&gt;%form&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;action: &lt;/span&gt;&lt;span class="s2"&gt;"save"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;method: &lt;/span&gt;&lt;span class="s2"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nc"&gt;.form-group&lt;/span&gt;
              &lt;span class="nt"&gt;%label&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;for: &lt;/span&gt;&lt;span class="s2"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; title
              &lt;span class="nt"&gt;%input&lt;/span&gt;&lt;span class="nf"&gt;#t&lt;/span&gt;&lt;span class="nc"&gt;.form-control&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s2"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;placeholder: &lt;/span&gt;&lt;span class="s2"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;type: &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nc"&gt;.form-group&lt;/span&gt;
              &lt;span class="nt"&gt;%label&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;for: &lt;/span&gt;&lt;span class="s2"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; content
              &lt;span class="nt"&gt;%textarea&lt;/span&gt;&lt;span class="nf"&gt;#c&lt;/span&gt;&lt;span class="nc"&gt;.form-control&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s2"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;rows: &lt;/span&gt;&lt;span class="s2"&gt;"12"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="nd"&gt;:preserve
&lt;/span&gt;                  &lt;span class="nd"&gt;## markdown ##&lt;/span&gt;
                  &lt;span class="nd"&gt;- rails&lt;/span&gt;
                  &lt;span class="nd"&gt;- sinatra&lt;/span&gt;

                  &lt;span class="nd"&gt;[ goto ](https://www.ruby-china.org)&lt;/span&gt;
            &lt;span class="nt"&gt;%button&lt;/span&gt;&lt;span class="nc"&gt;.btn.btn-primary&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;type: &lt;/span&gt;&lt;span class="s2"&gt;"submit"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; Submit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;app.rb 中增加写博客保存到数据库和查询博客&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;save&lt;/span&gt;
  &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:ctime&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;
  &lt;span class="no"&gt;DB&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:blog&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;params&lt;/span&gt;
  &lt;span class="n"&gt;redirect&lt;/span&gt; &lt;span class="s2"&gt;"/blog"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
  &lt;span class="vi"&gt;@records&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;DB&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:blog&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;
  &lt;span class="n"&gt;render_view&lt;/span&gt; &lt;span class="ss"&gt;:index&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;view/blog/index.haml&lt;/p&gt;
&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="nn"&gt;!!!
&lt;/span&gt;&lt;span class="nt"&gt;%html&lt;/span&gt;
  &lt;span class="nt"&gt;%head&lt;/span&gt;
    &lt;span class="nt"&gt;%meta&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;charset: &lt;/span&gt;&lt;span class="s2"&gt;"utf-8"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;%link&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;href: &lt;/span&gt;&lt;span class="s2"&gt;"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;rel: &lt;/span&gt;&lt;span class="s2"&gt;"stylesheet"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;%body&lt;/span&gt;
    &lt;span class="nc"&gt;.container&lt;/span&gt;
      &lt;span class="nt"&gt;%a&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;href: &lt;/span&gt;&lt;span class="s2"&gt;"blog/new"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; New
      &lt;span class="nt"&gt;%hr&lt;/span&gt;
      &lt;span class="nc"&gt;.row&lt;/span&gt;
        &lt;span class="nc"&gt;.col-md-12&lt;/span&gt;
          &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="vi"&gt;@records.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;record&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
            &lt;span class="nt"&gt;%br&lt;/span&gt;
            &lt;span class="nc"&gt;.card&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;style: &lt;/span&gt;&lt;span class="s2"&gt;"padding:1rem"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
              &lt;span class="nc"&gt;.card-header&lt;/span&gt;
                &lt;span class="nt"&gt;%h1&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:title&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
              &lt;span class="nt"&gt;%i&lt;/span&gt;&lt;span class="nc"&gt;.text-right&lt;/span&gt;
                published at: &lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:ctime&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
              &lt;span class="nc"&gt;.card-body&lt;/span&gt;
                &lt;span class="nt"&gt;%p&lt;/span&gt;
                  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Maruku&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:content&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;&lt;span class="nf"&gt;to_html&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 &lt;a href="http://localhost:7000/blog" rel="nofollow" target="_blank"&gt;http://localhost:7000/blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;一个自用 blog 基本完成&lt;/p&gt;

&lt;p&gt;看看表，不到 5 分钟，比拍黄片快多了 &lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Sun, 19 Sep 2021 20:16:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/41702</link>
      <guid>https://ruby-china.org/topics/41702</guid>
    </item>
    <item>
      <title>include Singleton 和 class &lt;&lt; self 有什么区别</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"singleton"&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CoderA&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Singleton&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;work&lt;/span&gt;
    &lt;span class="s2"&gt;"crash at 996"&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;class&lt;/span&gt; &lt;span class="nc"&gt;CoderB&lt;/span&gt;
  &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;work&lt;/span&gt;
      &lt;span class="s2"&gt;"live at 955"&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="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;CoderA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;work&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="no"&gt;CoderB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;work&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好象没什么区别 &lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Fri, 17 Sep 2021 11:27:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/41693</link>
      <guid>https://ruby-china.org/topics/41693</guid>
    </item>
    <item>
      <title>GitHub 不再是危险网站了  </title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/1d4392d3-a4ff-456c-b436-3ccd6f7a147d.jpg!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Mon, 13 Sep 2021 17:36:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/41681</link>
      <guid>https://ruby-china.org/topics/41681</guid>
    </item>
    <item>
      <title>Ruby Web 框架 RPS 及内存占用</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/tablecell/3e1208b2-9158-43f1-8cc8-e0fcdd0e019e.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;数据来自 &lt;a href="https://github.com/luislavena/bench-micro" rel="nofollow" target="_blank"&gt;https://github.com/luislavena/bench-micro&lt;/a&gt;&lt;/p&gt;</description>
      <author>tablecell</author>
      <pubDate>Sun, 12 Sep 2021 21:43:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/41678</link>
      <guid>https://ruby-china.org/topics/41678</guid>
    </item>
  </channel>
</rss>
