<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>darren (林)</title>
    <link>https://ruby-china.org/darren</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Ruby 回调机制解释</title>
      <description>&lt;p&gt;最近在 ActionCable::Channel::Base.subscribe_to_channel 函数中看到&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;subscribe_to_channel&lt;/span&gt;
  &lt;span class="n"&gt;run_callbacks&lt;/span&gt; &lt;span class="ss"&gt;:subscribe&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;subscribed&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="n"&gt;reject_subscription&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;subscription_rejected?&lt;/span&gt;
  &lt;span class="n"&gt;ensure_confirmation_sent&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后查看了&lt;a href="https://baike.baidu.com/item/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0/7545973?fr=aladdin" rel="nofollow" target="_blank"&gt;https://baike.baidu.com/item/%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0/7545973?fr=aladdin&lt;/a&gt; 百度的详细解释，回调函数就是一定条件触发的函数，之前听过介绍 nodejs 的回调机制，nodejs 的回调机制可以让 node 处理高并发而不占用大量资源 (道听途说没有验证),有没有关于 ruby 的回调详细解释？是否 ruby 和 js 都是单线程的，是否可以通过回调机制避免一些阻塞的操作，典型的比如文件读写？和其他语言在实现上有什么区别？这一块不是很懂，各位大佬有没有推荐的资料&lt;img title=":grinning:" alt="😀" src="https://twemoji.ruby-china.com/2/svg/1f600.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>darren</author>
      <pubDate>Mon, 14 Oct 2019 16:59:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/39149</link>
      <guid>https://ruby-china.org/topics/39149</guid>
    </item>
    <item>
      <title>webpacker 编译 sass 的时候部分样式编码失效!</title>
      <description>&lt;p&gt;在 xx.sass 文件中，z-index&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails webpacker:compile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在编译出来的 xx-random_hex_string.css 中&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;position&lt;/span&gt;&lt;span class="nd"&gt;:fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为什么 webpacker 编译样式会存在部分 css 编码失效？
        "webpack": "^3.12.0",
        "sass-loader": "^6.0.7",
        "style-loader": "^0.21.0",
        "node-sass": 4.9.2
目前经过调试排除一下几个可能：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;webpack 的 cache, 调整了以上几个 css 语句的顺序，编译出来的 css 文件顺序相应改变，因此排除 webpack 的 cache&lt;/li&gt;
&lt;li&gt;可以肯定 node-sass 可以正常工作，node-sass 原来是一个 c 库，是 libsass,
以下是 node-sass 的版本信息
```shell
node-sass       4.9.2   (Wrapper)       [JavaScript]
libsass         3.5.4   (Sass Compiler) [C/C++]&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;使用node-sass 命令


```shell
node-sass xx.scss xx.css --output-style=compressed
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出的 xx.css 文件中包含&lt;/p&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;position&lt;/span&gt;&lt;span class="nd"&gt;:fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这说明 libsass 应该是正常工作的&lt;/p&gt;

&lt;p&gt;求大佬给出解决思路，或者 webpack 应该怎么调试？&lt;/p&gt;</description>
      <author>darren</author>
      <pubDate>Wed, 09 Oct 2019 17:20:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/39127</link>
      <guid>https://ruby-china.org/topics/39127</guid>
    </item>
    <item>
      <title>请求格式为 json 时,ActiveRecord::Transtration 不能捕捉错误</title>
      <description>&lt;p&gt;当请求格式为 json 格式时，错误不能捕捉
view 层&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;= semantic_form_for @order, url: orders_path(format: :json)  do |of|
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设立使用了 json 请求格式&lt;/p&gt;

&lt;p&gt;controller 层&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;create&lt;/span&gt;
    &lt;span class="vi"&gt;@order&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Order&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;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:order&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit!&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;begin&lt;/span&gt;
        &lt;span class="no"&gt;ActiveRecord&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;transaction&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
            &lt;span class="vi"&gt;@order.save&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
        &lt;span class="k"&gt;end&lt;/span&gt;
        &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;order_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@order&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;RecordInvalid&lt;/span&gt;
        &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:new&lt;/span&gt;
    &lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;StandardError&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;
        &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:notice&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
        &lt;span class="n"&gt;render&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2019/f5639acd-60bc-401e-9cc8-a9b9dbf3b798.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;如果是正常的路由&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;= semantic_form_for @order, url: orders_path  do |of|
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以正常返回界面
为什么请求的格式和对 begin 和 rescue 的错误捕捉有影响？&lt;/p&gt;</description>
      <author>darren</author>
      <pubDate>Mon, 30 Sep 2019 10:14:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/39095</link>
      <guid>https://ruby-china.org/topics/39095</guid>
    </item>
  </channel>
</rss>
