<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>milk</title>
    <link>https://ruby-china.org/milk</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>云时代，没有 Ruby 的 SDK，各位怎么破？</title>
      <description>&lt;p&gt;好久没用 ruby 写点什么了，最近心血来潮，想在新项目中使用 ruby，结果在调研阶段又放弃了&lt;/p&gt;

&lt;p&gt;现在云时代，各类基础服务都在云上，比如我习惯的阿里云，存储用 OSS，数据库用 OTS，结果发现一个尴尬的问题，作为小语种的 ruby，云厂商显然不重视，并没有提供相关的 SDK，要使用这些产品的话，只能使用 API 自己写了。&lt;/p&gt;

&lt;p&gt;各位在实际项目中使用 ruby 的大佬，都是怎么应对这样问题的？倒不是不能写，可是用 ruby 是因为“make programmers happy”，自己写就不 happy 了&lt;img title=":joy:" alt="😂" src="https://twemoji.ruby-china.com/2/svg/1f602.svg" class="twemoji"&gt;  &lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Tue, 31 Jan 2023 10:34:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/42850</link>
      <guid>https://ruby-china.org/topics/42850</guid>
    </item>
    <item>
      <title>关于 MongoId 的 set 方法</title>
      <description>&lt;p&gt;假设我现在在 MongoDB 有这么一条数据&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;"&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在我要在这条数据中的 data 下，增加一个 bar 的项，在 mongodb 自带的 shell 中，可以这么操作&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;xx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nx"&gt;$set&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data.bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bar&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}}})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是在使用 MongoId 库提供的 set 方法时，却发现他把整个 data 内容给替换了，而不是往里面新增了属性 &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'data.bar'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s1"&gt;'bar'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是我使用方式错了，还是另有方法？&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Fri, 29 Sep 2017 12:01:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/34290</link>
      <guid>https://ruby-china.org/topics/34290</guid>
    </item>
    <item>
      <title>关于 MongoId 里使用 DBRef</title>
      <description>&lt;p&gt;比如一个用户下有多篇文章，文章分开存，用户用 DBRef 来引用文章&lt;/p&gt;

&lt;p&gt;在 Mongo 控制台直接操作可以&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//user是一个已经找到的用户&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 MongoId 里，得到的就是一个 DBRef 对象，看了一下 methods，貌似没有可以直接取得对象的方法，难道还要这样做？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;articles&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>milk</author>
      <pubDate>Tue, 12 Sep 2017 16:19:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/34096</link>
      <guid>https://ruby-china.org/topics/34096</guid>
    </item>
    <item>
      <title>如何自动加载自定义的类，网上找的都不行</title>
      <description>&lt;p&gt;如题，rails 4
我尝试了网上能找到的方法，都不行，不会自动重新加载，也不会自动 require
比如我在 app 下加了一个 service 文件夹试过&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#不行&lt;/span&gt;
&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autoload_paths&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/app/service/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="c1"&gt;#也不行&lt;/span&gt;
&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eager_load_paths&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/app/service/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="c1"&gt;#下面的也不行&lt;/span&gt;
&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eager_load_paths&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="no"&gt;Dir&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'app'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'service'&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="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autoload_paths&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="no"&gt;Dir&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'app'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'service'&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;还有一个类似的问题是，我在系统已经存在的文件夹下，比如 controller 下，自己建立了一个文件，也不会自动重新加载和 require，这是怎么回事，只有用 rails g controller 生成的文件才会自动加载？&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Sun, 04 Jan 2015 21:29:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/23540</link>
      <guid>https://ruby-china.org/topics/23540</guid>
    </item>
    <item>
      <title>多个 Rails 项目，共用一个库，一般怎么操作</title>
      <description>&lt;p&gt;自己做的练手的几个小项目，操作的业务和数据都是同一个，只不过面向的用户不一样，所以在里面不可避免的有一些共通的业务部分。
本来写的时候也没在意，因为每个项目都只用到一点点共通部分，就代码复制了一下就算 OK 了&lt;img title=":disappointed:" alt="😞" src="https://twemoji.ruby-china.com/2/svg/1f61e.svg" class="twemoji"&gt;
后来慢慢项目变大，共通的也越来越多，才突然发现，修改点业务好烦，得几个项目共享部分一起改&lt;img title=":cold_sweat:" alt="😰" src="https://twemoji.ruby-china.com/2/svg/1f630.svg" class="twemoji"&gt;&lt;/p&gt;

&lt;p&gt;以前写桌面程序，写成 dll 就好了，不知道 rails 里面，像这种情况该怎么办？做成 GEM（到现在为止还不会写 GEM）？&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Sun, 28 Dec 2014 15:28:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/23440</link>
      <guid>https://ruby-china.org/topics/23440</guid>
    </item>
    <item>
      <title>我觉得我是用 Java 的方式在写 ROR，求修改</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#第几页&lt;/span&gt;
&lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="o"&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;:p&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;
&lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^\d+$/&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_i&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="c1"&gt;#根据名称或序列号查询&lt;/span&gt;
&lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&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="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;#限制长度&lt;/span&gt;
&lt;span class="n"&gt;serial&lt;/span&gt; &lt;span class="o"&gt;=&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;:serial&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;condition&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;

&lt;span class="k"&gt;unless&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;blank?&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
  &lt;span class="n"&gt;condition&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"name LIKE ?"&lt;/span&gt;
  &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"%&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="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="n"&gt;serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;blank?&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
  &lt;span class="n"&gt;condition&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="k"&gt;unless&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;blank?&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="s2"&gt;" and serial LIKE ?"&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="s2"&gt;"serial LIKE ?"&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"%&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;serial&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;如上代码，功能是实现了，不过感觉和 JAVA 的差不多，换大家会怎么写？&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Sun, 17 Mar 2013 16:03:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/9507</link>
      <guid>https://ruby-china.org/topics/9507</guid>
    </item>
    <item>
      <title>ActiveRecord 的关联，一定要产生那么多的 SQL 吗？</title>
      <description>&lt;p&gt;初使用 AR 的关联，比如我有一个表 book 和 master，每本书有一个主人，我要列出 20 本书，同时列出主人的名字
我就在 book 表里用了&lt;code&gt;belongs_to :master&lt;/code&gt;，然后找出 20 条数据，结果在输出时看到了足足 21 条 SQL&lt;/p&gt;

&lt;p&gt;到底是不是我用错了，或者我用的时机不对？否则效率未免太低了点吧，要是我要显示 100 本书那不是要 101 条 SQL 了？&lt;/p&gt;

&lt;p&gt;麻烦解惑，万分感谢！&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Fri, 15 Mar 2013 18:19:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/9455</link>
      <guid>https://ruby-china.org/topics/9455</guid>
    </item>
    <item>
      <title>请教关于 assets 如何只包含必要的 js</title>
      <description>&lt;p&gt;找了几个教程看了，自己也试了试，感觉还是云里雾里
以 JS 为例&lt;/p&gt;

&lt;p&gt;1.一用 require_tree，就把所有的 JS 都包含进去了
2.试着用 javascript_include_tag，发现用 rake assets:precompile 的时候，几个文件并没有合并到一起
3.使用 rails g controller foo 的时候，会自动生成一个和 controller 相同的 JS，但是一般页面，应该是一个 controller 下的各个 action 页面，包含的 JS 应该是不一样的&lt;/p&gt;

&lt;p&gt;我现在是头疼了，麻烦大家给举个例子吧
比如，整个网站，所有页面都是要用到 jquery 的
然后，/book/add 页面下，需要包含 foo.js 和 bar.js 两个 js
这样的话，最终应该是 jquery.js，foo.js 和 bar.js 三个 JS 文件被包含，使用 rake assets:precompile 后，应该会生成这三个 JS 文件合并后的一个新 JS 文件，对否？&lt;/p&gt;

&lt;p&gt;那么，我到底要怎么去写这个引用 JS 的语句？写在哪，application.js？？&lt;/p&gt;

&lt;p&gt;万分感谢，能帮我把上面的例子说明 一下，或者，资料也行，谢谢了&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Sun, 10 Mar 2013 22:32:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/9306</link>
      <guid>https://ruby-china.org/topics/9306</guid>
    </item>
    <item>
      <title>render :text 正常而:json 就乱码</title>
      <description>&lt;p&gt;windows 7 下，RUBY 1.9.3 + Rails 3.2.8&lt;/p&gt;

&lt;p&gt;adapter 用的是 mysql，数据库 MySQL，编码全部是 UTF8&lt;/p&gt;

&lt;p&gt;在写代码的时候，最初发现问题是 render :text 时返回正常，而 render :json 就是乱码&lt;/p&gt;

&lt;p&gt;最终发现问题出在从数据库读取出来的数据，使用 to_json 就会有问题&lt;/p&gt;

&lt;p&gt;本来写了好多，后来发现一张图片更能说明问题&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/3bd39639937dfb6676d987bb51eb7642.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>milk</author>
      <pubDate>Thu, 04 Oct 2012 20:11:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/5872</link>
      <guid>https://ruby-china.org/topics/5872</guid>
    </item>
  </channel>
</rss>
