<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>whatisruby</title>
    <link>https://ruby-china.org/whatisruby</link>
    <description>慢慢的努力向前爬</description>
    <language>en-us</language>
    <item>
      <title>如何判断一个手机号码是 imessage 用户</title>
      <description>&lt;p&gt;用什么办法能用代码判断
一个邮箱是 imessage 用户&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Mon, 15 Jul 2013 18:30:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/12523</link>
      <guid>https://ruby-china.org/topics/12523</guid>
    </item>
    <item>
      <title>(急) 如何一次性删除 iMessage 所有会话记录</title>
      <description>&lt;p&gt;iMessage 有很多会话记录。
不知各位大神 怎样做到一次性删除 iMessage 所有会话记录 (急!!!!)
网上有 进入 ~/Library/Messages/  删除里面的 chat.db, chat.db-shm, chat.db-wal 等文件。但是我试了没用..&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Thu, 11 Jul 2013 20:22:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/12436</link>
      <guid>https://ruby-china.org/topics/12436</guid>
    </item>
    <item>
      <title>mongoid follow 设计 (同时返回不同表结果集)</title>
      <description>&lt;p&gt;（修改：目前主要的问题可能还是如何同时返回不同表字段的结果集）&lt;/p&gt;

&lt;p&gt;最近折腾 mongodb，又碰到个新手问题&lt;/p&gt;

&lt;p&gt;问题是关于“关注”的问题，我想得到的结果是我的粉丝列表（同时要获取 1：粉丝 name，2：我对该粉丝是否也关注，3：粉丝对我的关注时间）
大概 model 如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;User&lt;/span&gt;
   &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Mongoid&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Document&lt;/span&gt;
   &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Mongoid&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Timestamps&lt;/span&gt;
   &lt;span class="n"&gt;field&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="no"&gt;UserRelation&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Mongoid&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Document&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Mongoid&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Timestamps&lt;/span&gt;
    &lt;span class="ss"&gt;field: &lt;/span&gt;&lt;span class="n"&gt;from_user_id&lt;/span&gt;   &lt;span class="c1"&gt;#关注者id&lt;/span&gt;
    &lt;span class="ss"&gt;field: &lt;/span&gt;&lt;span class="n"&gt;to_user_id&lt;/span&gt;     &lt;span class="c1"&gt;#被关注者id&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问如何实现返回结果的 json 格式是？
[{"name":"xx","status":"未关注","time":"2012:12:12"},{"name":"oo","status":"已经关注","time":"2012:12:22"}]&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Tue, 18 Dec 2012 21:18:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/7673</link>
      <guid>https://ruby-china.org/topics/7673</guid>
    </item>
    <item>
      <title>用 sinatra/mongoid/Carrierwave 如何实现文件上传</title>
      <description>&lt;p&gt;自己瞎搞，出现个问题，麻烦大家看看
Model：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Mongoid&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Document&lt;/span&gt;
  &lt;span class="n"&gt;field&lt;/span&gt; &lt;span class="ss"&gt;:avatar&lt;/span&gt;
  &lt;span class="n"&gt;mount_uploader&lt;/span&gt; &lt;span class="ss"&gt;:avatar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;AvatarUploader&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;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;'avatra'&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;'file'&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;处理：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;post&lt;/span&gt; &lt;span class="s1"&gt;'/upload'&lt;/span&gt;  &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&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;:id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="c1"&gt;#pramas[:avatra]返回的是&lt;/span&gt;
&lt;span class="c1"&gt;#{:filename=&amp;gt;"account_store.png", :type=&amp;gt;"image/png", :name=&amp;gt;"avatra", :tempfile=&amp;gt;&amp;lt;File:/tmp/RackMultipart20121210-4172-ezb7jv&amp;gt;, :head=&amp;gt;"Content-Disposition: form-data; name=\"avatra\"; filename=\"account_store.png\"\r\nContent-Type: image/png\r\n"}&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;avatra&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pramas&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:avatra&lt;/span&gt;&lt;span class="p"&gt;]&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;save&lt;/span&gt;  &lt;span class="c1"&gt;# 这里出错&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;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;NoMethodError&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;undefined&lt;/span&gt; &lt;span class="nb"&gt;method&lt;/span&gt; &lt;span class="sb"&gt;`__bson_dump__' for #&amp;lt;File:/tmp/RackMultipart20121210-4026-eu6nlb&amp;gt;:
    /home/ivan/.rvm/gems/ruby-1.9.3-p194/gems/moped-1.1.6/lib/moped/bson/extensions/hash.rb:36:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;__bson_dump__&lt;/span&gt;&lt;span class="s1"&gt;'
    /home/ivan/.rvm/gems/ruby-1.9.3-p194/gems/moped-1.1.6/lib/moped/bson/extensions/hash.rb:35:in `each'&lt;/span&gt;
    &lt;span class="sr"&gt;/home/i&lt;/span&gt;&lt;span class="n"&gt;van&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rvm&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.9&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p194&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;moped&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;moped&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bson&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;extensions&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="ss"&gt;:in&lt;/span&gt; &lt;span class="sb"&gt;`__bson_dump__'
    /home/ivan/.rvm/gems/ruby-1.9.3-p194/gems/moped-1.1.6/lib/moped/bson/extensions/hash.rb:36:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;__bson_dump__&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我在 gems/moped-1.1.6/lib/moped/bson/extensions/hash.rb:36 这行代码看了下，
我猜大概是跟 pramas[:avatra] 返回的是 Hash 有关&lt;/p&gt;

&lt;p&gt;麻烦大家帮忙看看，我应该怎么做？谢谢&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Mon, 10 Dec 2012 23:05:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/7455</link>
      <guid>https://ruby-china.org/topics/7455</guid>
    </item>
    <item>
      <title>服务端 token 怎样设计</title>
      <description>&lt;p&gt;最近要给 手机应用客户端提供 api
目前还不确定用哪些，或则 sinatra 还是 grape？，求推荐！！&lt;/p&gt;

&lt;p&gt;回到主题
因为 api 需要权限控制，所以有些 api 需要带上 token。
请教大家：服务端产生的 token，一般是放在数据库，每次请求 api 都查询一次
还是放在内存中，然后设计过期时间？&lt;/p&gt;

&lt;p&gt;麻烦大家提供靠谱点的思路&lt;/p&gt;

&lt;p&gt;（我看了下 ruby-china 的代码，好像直接存入 user 表，每次请求查询一次的）&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Wed, 05 Dec 2012 18:52:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/7343</link>
      <guid>https://ruby-china.org/topics/7343</guid>
    </item>
    <item>
      <title>mongoid 缓存</title>
      <description>&lt;p&gt;两张表，大概结构是&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reply
  belongs_to :topic, :inverse_of =&amp;gt; :replies

Topic
  has_many :replies
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有一个 id=1 的 topic，同时有一个 id=1 的 reply&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reply = Reply.find_by_id(1)
topic = reply.topic
topic2 = Topic.find_by_id(1)
p topic.equal? topic2 # 内存比较结果是false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个可以理解，但是&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reply = Reply.find_by_id(1)
topic = Topic.find_by_id(1)
p reply.topic.equal? topic # 内存比较结果是true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看日志，原因是 reply.topic 没有重新查询数据库，但是&lt;/p&gt;

&lt;p&gt;现在我只知道现象是这样的，但不清楚 mongoid 的缓存是怎么弄的？
还有什么合适场景，如何正确运用这个特性
大家帮忙稍微讲解一下&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Wed, 05 Sep 2012 15:42:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/5375</link>
      <guid>https://ruby-china.org/topics/5375</guid>
    </item>
    <item>
      <title>如何在指定文件夹下建 scaffold</title>
      <description>&lt;p&gt;学习 ruby 也一个月了
目前在看 ruby-china，遇到个问题
一般情况下，scaffold 用命令
rails g scaffold User name:string ...
可以在 app/controllers/ 文件下生成 controller
但是 ruby-china 的后台 controller 是在 cpanel 文件下，
app/controllers/cpanel
请问一下，指定文件夹 命令是怎样的？
（当然笨方法 手动添加 我还是知道的）&lt;/p&gt;</description>
      <author>whatisruby</author>
      <pubDate>Thu, 23 Aug 2012 15:50:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/5106</link>
      <guid>https://ruby-china.org/topics/5106</guid>
    </item>
  </channel>
</rss>
