<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>laocainiao (老菜鸟)</title>
    <link>https://ruby-china.org/laocainiao</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>hotwired 中 turbo frame 的请求仍然渲染 layout，这是一个 Bug 吗？</title>
      <description>&lt;p&gt;使用了 hotwired-rails 后，对于 turbo frame 类型的请求，如：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= turbo_frame_tag "edit_dialog" do %&amp;gt;
&amp;lt;%= link_to "Edit",  xxxx_path(user) %&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者 &lt;code&gt;&amp;lt;%= link_to "Edit", xxxx_path(user), data: {turbo_frame: "edit_dialog"}%&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;我希望它的响应中不要渲染 layout, 看了源码，发现也的确有&lt;a href="https://github.com/hotwired/turbo-rails/blob/6958e0e2742d4744da80128d178e7255989386a4/app/controllers/turbo/frames/frame_request.rb#L16" rel="nofollow" target="_blank" title=""&gt;这个功能&lt;/a&gt;，但是实际上我在项目中必须我手动在控制器中显示指定：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;respond_to do |format|      
      format.html { render layout: false if turbo_frame_request? }
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以我想问一下这是一个 bug 吗？&lt;/p&gt;</description>
      <author>laocainiao</author>
      <pubDate>Mon, 14 Feb 2022 16:24:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/42137</link>
      <guid>https://ruby-china.org/topics/42137</guid>
    </item>
    <item>
      <title>Rails 7 中使用 Docker 时需要在其中安装 NodeJs 吗？</title>
      <description>&lt;p&gt;根据 Docker 的理念 最终的软件应该是像一块块积木搭建起来的一样，加上 Rails 7 中对于 JS 依赖的解耦，现如今你们还会直接在 Dockerfile 中声明安装 NodeJs 的环境和相关的打包工具吗？毕竟 Rails production 环境的镜像最终只需要构建好的 assets 文件，如果这样搞好了，我感觉构建出来的镜像应该会简洁很多。&lt;/p&gt;

&lt;p&gt;所以关于这一块有什么实践吗？有相关的文档吗？对于在 docker-compose 中如何搭配协作、先后顺序、文件互访这一块感觉还不太明了。&lt;/p&gt;</description>
      <author>laocainiao</author>
      <pubDate>Thu, 10 Feb 2022 17:05:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/42121</link>
      <guid>https://ruby-china.org/topics/42121</guid>
    </item>
    <item>
      <title>请教 table_name_prefix 的用法</title>
      <description>&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
class Post &amp;lt; ApplicationRecord
  self.table_name_prefix = "st_"
  self.table_name = 'posts'
end


Loading development environment (Rails 7.0.0)
irb(main):001:0&amp;gt; Post.table_name
=&amp;gt; "posts"
irb(main):002:0&amp;gt; Post.first
  Post Load (17.5ms)  SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT $1  [["LIMIT", 1]]
irb(main):003:0&amp;gt; Post.reset_table_name
=&amp;gt; "st_posts"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我预期 Post 能正确的给出 我配置好的 数据表名称，并在 sql 查询中应用配置好的数据表名称，因为我想在 migration 中使用可配置的  数据表名称。&lt;/p&gt;

&lt;p&gt;相关链接：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidock.com/rails/ActiveRecord/Base/table_name_prefix/class" rel="nofollow" target="_blank"&gt;https://apidock.com/rails/ActiveRecord/Base/table_name_prefix/class&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema.html#method-c-table_name_prefix" rel="nofollow" target="_blank"&gt;https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema.html#method-c-table_name_prefix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>laocainiao</author>
      <pubDate>Tue, 28 Dec 2021 18:48:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/42038</link>
      <guid>https://ruby-china.org/topics/42038</guid>
    </item>
    <item>
      <title>我把我的一个 C 项目用 Ruby 重写了，感慨万千</title>
      <description>&lt;p&gt;之前用 C 写的一个服务端的程序，用到的技术栈是 GLib、GStreamer、libsoup、sqlite、websocket，实现的功能有网络通信，语音播放等功能，服务器端数据库及文件管理，JSON API 等，断断续续花了一年多的时间，代码量 12000 多行。&lt;/p&gt;

&lt;p&gt;前一段时间，我将 C 程序大部分功能都砍掉，只保留关键的部分，只保留语音播放和一些关键的网络通信等最基本的功能; &lt;/p&gt;

&lt;p&gt;然后用 Ruby 重写了其中的 90% 的功能，C 程序间通过 TCP 实现进程间的通信，，用到的技术栈是 Eventmachine / Sinatra / Sequel 等，花了一个月。代码量 2000 多行。&lt;/p&gt;

&lt;p&gt;所有这一切基本完成后，感觉良好，感觉之前都白忙活了，5 倍多的代码量，而且感觉实现的功能还不完善，最害怕有需求变动，现在轻松应对（但是表面上不能表现出来）&lt;/p&gt;

&lt;p&gt;之前都是写完代码，然后 make 一下，嗯，没有报错，还不错，接着手工测测就 OK 了。&lt;/p&gt;

&lt;p&gt;现在是写完代码，rake test 一下，嗯，0 failures, 0 errors，真香。&lt;/p&gt;</description>
      <author>laocainiao</author>
      <pubDate>Sun, 21 Apr 2019 12:38:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/38430</link>
      <guid>https://ruby-china.org/topics/38430</guid>
    </item>
    <item>
      <title>Ruby 3 将有类型系统了</title>
      <description>&lt;p&gt;&lt;a href="https://twitter.com/darkdimius/status/1119115657776209920" rel="nofollow" target="_blank"&gt;https://twitter.com/darkdimius/status/1119115657776209920&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;相关网站： &lt;a href="https://sorbet.org/" rel="nofollow" target="_blank"&gt;https://sorbet.org/&lt;/a&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# typed: true&lt;/span&gt;
&lt;span class="kp"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;T&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Sig&lt;/span&gt;

&lt;span class="n"&gt;sig&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="no"&gt;String&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;returns&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&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;"Hello, &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!"&lt;/span&gt;
  &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;length&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Sorbet"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# ok!&lt;/span&gt;
&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;   &lt;span class="c1"&gt;# error: Not enough arguments provided for method `main`&lt;/span&gt;
&lt;span class="n"&gt;man&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# error: Method `man` does not exist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你们怎么看？&lt;/p&gt;</description>
      <author>laocainiao</author>
      <pubDate>Sat, 20 Apr 2019 18:25:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/38427</link>
      <guid>https://ruby-china.org/topics/38427</guid>
    </item>
  </channel>
</rss>
