<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>tank_lei (米茶)</title>
    <link>https://ruby-china.org/tank_lei</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>rails android 用户 数据传递 问题</title>
      <description>&lt;p&gt;android 开发，利用 rails 作为后台
用户登录成功，记录了 session:
session[:user_id] = &lt;a href="/User.id" class="user-mention" title="@User.id"&gt;&lt;i&gt;@&lt;/i&gt;User.id&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;但是后面 android 根据用户查询数据的时候，在 rails 里面的&lt;br&gt;
puts session[:user_id]  为 空&lt;/p&gt;

&lt;p&gt;我把 application_controller.rb 里面的
#protect_from_forgery  注释了，暂时不需要防护&lt;/p&gt;

&lt;p&gt;如果是直接浏览器访问，这是在一个 rails 工程里，
puts session[:user_id] 是有值的&lt;/p&gt;

&lt;p&gt;网上看了看都是说 session 的存储问题，但没有想到好的解决方法。
最土的就是每次从 android 请求都把 user_id 带着&lt;/p&gt;

&lt;p&gt;有没有什么好的方案，在 android 应用访问 rails 服务端时，用户的 user_id 保存？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Thu, 12 Dec 2013 17:29:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/16165</link>
      <guid>https://ruby-china.org/topics/16165</guid>
    </item>
    <item>
      <title>你们都谁的网站上线了？</title>
      <description>&lt;p&gt;把你们网站地址发出来，给你们增加人气，顺便寻找一下灵感阿！&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Mon, 18 Nov 2013 15:16:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/15628</link>
      <guid>https://ruby-china.org/topics/15628</guid>
    </item>
    <item>
      <title>关于 csrf 的问题</title>
      <description>&lt;p&gt;现在需要通过 rails 作为后端，为 android 提供数据。但是在 form 提交的时候，发现一个 csrf 的问题。
我的解决方案是，在 post 提交之前，android 端先 get 方式请求一次，我把 token 传送过去，然后，post 提交的时候，把这个 token 带上。不知道只有可行不？还是说有更简单的方法&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Mon, 18 Nov 2013 11:35:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/15618</link>
      <guid>https://ruby-china.org/topics/15618</guid>
    </item>
    <item>
      <title>关于多表查询的问题</title>
      <description>&lt;p&gt;model :
class Order &amp;lt; ActiveRecord::Base
      #  has_many :dics         注意这里注释掉了
 end&lt;/p&gt;

&lt;p&gt;class Dic &amp;lt; ActiveRecord::Base
         belongs_to :order
 end&lt;/p&gt;

&lt;p&gt;表结构描述：
   一个订单表 orders，里面会存有一个属性（pay_type）用来到字典表里查询数据
注意：这两个表之间没有进行外键约束
   一个字典表 dics(id,name), 这里只列举两个字段&lt;/p&gt;

&lt;p&gt;想实现效果：
通过订单，查询字典表里的 name 值，我知道通过两条语句能出来
&lt;a href="/order" class="user-mention" title="@order"&gt;&lt;i&gt;@&lt;/i&gt;order&lt;/a&gt; = Order.find(params[:id]) 
name = Dic.find(params[:pay_type])&lt;/p&gt;

&lt;p&gt;但在页面里，有一个订单列表页，需要遍历订单，这其中如何获取字典表里的 name？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Mon, 11 Nov 2013 17:36:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/15459</link>
      <guid>https://ruby-china.org/topics/15459</guid>
    </item>
    <item>
      <title>rails 数据迁移问题</title>
      <description>&lt;p&gt;通过 powerdesigner 设计的数据库，然后直接导入到数据库
但 rails 里运行的时候出现错误：
``` Migrations are pending; run 'rake db:migrate RAILS_ENV=development' to resolve this issue.&lt;/p&gt;

&lt;p&gt;提示我需要迁移
因为数据库表已经存在，即使迁移的话，也有错误，无法访问
这个怎么解决？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Thu, 07 Nov 2013 11:09:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/15364</link>
      <guid>https://ruby-china.org/topics/15364</guid>
    </item>
    <item>
      <title>用 rvm 安装 ruby 装不上。。</title>
      <description>&lt;p&gt;如题，今天想升级到 2.0.0p247？结果失败，还把以前的 ruby 也卸载了，都装不上了。。。
按照 &lt;a href="http://ruby-china.org/wiki/install-rails-on-ubuntu-12-04-server" rel="nofollow" target="_blank"&gt;http://ruby-china.org/wiki/install-rails-on-ubuntu-12-04-server&lt;/a&gt;  的指示都操作了
只要一到 rvm install   ruby    就会出现错误：
Error running 'requirements_debian_update_system ',
please read /home/teacher/.rvm/log/1383292840/update_system.log
Requirements installation failed with status: 100.&lt;/p&gt;

&lt;p&gt;查看 log 如下：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[2013-11-01 16:00:40] requirements_debian_update_system
requirements_debian_update_system () 
{ 
    __rvm_try_sudo apt-get --quiet --yes update || { 
        typeset __ret=$?;
        case ${__ret} in 
            100)
                rvm_error "There has been error while updating 'apt-get', please give it some time and try again later.
For 404 errors check your sources configured in:
    /etc/apt/sources.list
    /etc/apt/sources.list.d/*.list
"
            ;;
        esac;
        return ${__ret}
    }
}
current path: /etc/apt
command(2): requirements_debian_update_system 
获取：1 http://dl.google.com stable Release.gpg [198 B]
命中 http://dl.google.com stable Release
命中 http://dl.google.com stable/main amd64 Packages
命中 http://dl.google.com stable/main i386 Packages
忽略 http://ppa.launchpad.net precise Release.gpg
忽略 http://dl.google.com stable/main TranslationIndex
忽略 http://ppa.launchpad.net precise Release.gpg
忽略 http://ppa.launchpad.net precise Release
忽略 http://ppa.launchpad.net precise Release
忽略 http://ppa.launchpad.net precise/main i386 Packages/DiffIndex
忽略 http://ppa.launchpad.net precise/main TranslationIndex
忽略 http://dl.google.com stable/main Translation-zh_CN
忽略 http://dl.google.com stable/main Translation-zh
忽略 http://dl.google.com stable/main Translation-en_US
忽略 http://dl.google.com stable/main Translation-en
忽略 http://ppa.launchpad.net precise/main amd64 Packages/DiffIndex
忽略 http://ppa.launchpad.net precise/main i386 Packages/DiffIndex
忽略 http://ppa.launchpad.net precise/main TranslationIndex
获取：2 http://mirrors.163.com precise Release.gpg [198 B]
错误 http://ppa.launchpad.net precise/main Sources
  404  Not Found
错误 http://ppa.launchpad.net precise/main amd64 Packages
  404  Not Found
命中 http://mirrors.163.com precise-security Release.gpg
错误 http://ppa.launchpad.net precise/main Sources
  404  Not Found
命中 http://mirrors.163.com precise-updates Release.gpg
错误 http://ppa.launchpad.net precise/main i386 Packages
  404  Not Found
忽略 http://ppa.launchpad.net precise/main Translation-zh_CN
忽略 http://ppa.launchpad.net precise/main Translation-zh
忽略 http://ppa.launchpad.net precise/main Translation-en_US
命中 http://mirrors.163.com precise-proposed Release.gpg
忽略 http://ppa.launchpad.net precise/main Translation-en
错误 http://ppa.launchpad.net precise/main amd64 Packages
  404  Not Found
错误 http://ppa.launchpad.net precise/main i386 Packages
  404  Not Found
命中 http://mirrors.163.com precise-backports Release.gpg
忽略 http://ppa.launchpad.net precise/main Translation-zh_CN
忽略 http://ppa.launchpad.net precise/main Translation-zh
忽略 http://ppa.launchpad.net precise/main Translation-en_US
忽略 http://ppa.launchpad.net precise/main Translation-en
命中 http://mirrors.163.com precise Release
命中 http://mirrors.163.com precise-security Release
命中 http://mirrors.163.com precise-updates Release
命中 http://mirrors.163.com precise-proposed Release
命中 http://mirrors.163.com precise-backports Release
命中 http://mirrors.163.com precise/main Sources
命中 http://mirrors.163.com precise/restricted Sources
命中 http://mirrors.163.com precise/universe Sources
命中 http://mirrors.163.com precise/multiverse Sources
命中 http://mirrors.163.com precise/main amd64 Packages
命中 http://mirrors.163.com precise/restricted amd64 Packages
命中 http://mirrors.163.com precise/universe amd64 Packages
命中 http://mirrors.163.com precise/multiverse amd64 Packages
命中 http://mirrors.163.com precise/main i386 Packages
命中 http://mirrors.163.com precise/restricted i386 Packages
命中 http://mirrors.163.com precise/universe i386 Packages
命中 http://mirrors.163.com precise/multiverse i386 Packages
命中 http://mirrors.163.com precise/main TranslationIndex
命中 http://mirrors.163.com precise/multiverse TranslationIndex
命中 http://mirrors.163.com precise/restricted TranslationIndex
命中 http://mirrors.163.com precise/universe TranslationIndex
命中 http://mirrors.163.com precise-security/main Sources
命中 http://mirrors.163.com precise-security/restricted Sources
命中 http://mirrors.163.com precise-security/universe Sources
命中 http://mirrors.163.com precise-security/multiverse Sources
命中 http://mirrors.163.com precise-security/main amd64 Packages
命中 http://mirrors.163.com precise-security/restricted amd64 Packages
命中 http://mirrors.163.com precise-security/universe amd64 Packages
命中 http://mirrors.163.com precise-security/multiverse amd64 Packages
命中 http://mirrors.163.com precise-security/main i386 Packages
命中 http://mirrors.163.com precise-security/restricted i386 Packages
命中 http://mirrors.163.com precise-security/universe i386 Packages
命中 http://mirrors.163.com precise-security/multiverse i386 Packages
命中 http://mirrors.163.com precise-security/main TranslationIndex
命中 http://mirrors.163.com precise-security/multiverse TranslationIndex
命中 http://mirrors.163.com precise-security/restricted TranslationIndex
命中 http://mirrors.163.com precise-security/universe TranslationIndex
命中 http://mirrors.163.com precise-updates/main Sources
命中 http://mirrors.163.com precise-updates/restricted Sources
命中 http://mirrors.163.com precise-updates/universe Sources
命中 http://mirrors.163.com precise-updates/multiverse Sources
命中 http://mirrors.163.com precise-updates/main amd64 Packages
命中 http://mirrors.163.com precise-updates/restricted amd64 Packages
命中 http://mirrors.163.com precise-updates/universe amd64 Packages
命中 http://mirrors.163.com precise-updates/multiverse amd64 Packages
命中 http://mirrors.163.com precise-updates/main i386 Packages
命中 http://mirrors.163.com precise-updates/restricted i386 Packages
命中 http://mirrors.163.com precise-updates/universe i386 Packages
命中 http://mirrors.163.com precise-updates/multiverse i386 Packages
命中 http://mirrors.163.com precise-updates/main TranslationIndex
命中 http://mirrors.163.com precise-updates/multiverse TranslationIndex
命中 http://mirrors.163.com precise-updates/restricted TranslationIndex
命中 http://mirrors.163.com precise-updates/universe TranslationIndex
命中 http://mirrors.163.com precise-proposed/main Sources
命中 http://mirrors.163.com precise-proposed/restricted Sources
命中 http://mirrors.163.com precise-proposed/universe Sources
命中 http://mirrors.163.com precise-proposed/multiverse Sources
命中 http://mirrors.163.com precise-proposed/main amd64 Packages
命中 http://mirrors.163.com precise-proposed/restricted amd64 Packages
命中 http://mirrors.163.com precise-proposed/universe amd64 Packages
命中 http://mirrors.163.com precise-proposed/multiverse amd64 Packages
命中 http://mirrors.163.com precise-proposed/main i386 Packages
命中 http://mirrors.163.com precise-proposed/restricted i386 Packages
命中 http://mirrors.163.com precise-proposed/universe i386 Packages
命中 http://mirrors.163.com precise-proposed/multiverse i386 Packages
命中 http://mirrors.163.com precise-proposed/main TranslationIndex
命中 http://mirrors.163.com precise-proposed/multiverse TranslationIndex
命中 http://mirrors.163.com precise-proposed/restricted TranslationIndex
命中 http://mirrors.163.com precise-proposed/universe TranslationIndex
命中 http://mirrors.163.com precise-backports/main Sources
命中 http://mirrors.163.com precise-backports/restricted Sources
命中 http://mirrors.163.com precise-backports/universe Sources
命中 http://mirrors.163.com precise-backports/multiverse Sources
命中 http://mirrors.163.com precise-backports/main amd64 Packages
命中 http://mirrors.163.com precise-backports/restricted amd64 Packages
命中 http://mirrors.163.com precise-backports/universe amd64 Packages
命中 http://mirrors.163.com precise-backports/multiverse amd64 Packages
命中 http://mirrors.163.com precise-backports/main i386 Packages
命中 http://mirrors.163.com precise-backports/restricted i386 Packages
命中 http://mirrors.163.com precise-backports/universe i386 Packages
命中 http://mirrors.163.com precise-backports/multiverse i386 Packages
命中 http://mirrors.163.com precise-backports/main TranslationIndex
命中 http://mirrors.163.com precise-backports/multiverse TranslationIndex
命中 http://mirrors.163.com precise-backports/restricted TranslationIndex
命中 http://mirrors.163.com precise-backports/universe TranslationIndex
命中 http://mirrors.163.com precise/main Translation-zh_CN
命中 http://mirrors.163.com precise/main Translation-en
命中 http://mirrors.163.com precise/multiverse Translation-zh_CN
命中 http://mirrors.163.com precise/multiverse Translation-en
命中 http://mirrors.163.com precise/restricted Translation-zh_CN
命中 http://mirrors.163.com precise/restricted Translation-en
命中 http://mirrors.163.com precise/universe Translation-zh_CN
命中 http://mirrors.163.com precise/universe Translation-en
命中 http://mirrors.163.com precise-security/main Translation-en
命中 http://mirrors.163.com precise-security/multiverse Translation-en
命中 http://mirrors.163.com precise-security/restricted Translation-en
命中 http://mirrors.163.com precise-security/universe Translation-en
命中 http://mirrors.163.com precise-updates/main Translation-zh_CN
命中 http://mirrors.163.com precise-updates/main Translation-en
命中 http://mirrors.163.com precise-updates/multiverse Translation-zh_CN
命中 http://mirrors.163.com precise-updates/multiverse Translation-en
命中 http://mirrors.163.com precise-updates/restricted Translation-zh_CN
命中 http://mirrors.163.com precise-updates/restricted Translation-en
命中 http://mirrors.163.com precise-updates/universe Translation-zh_CN
命中 http://mirrors.163.com precise-updates/universe Translation-en
命中 http://mirrors.163.com precise-proposed/main Translation-zh_CN
命中 http://mirrors.163.com precise-proposed/main Translation-en
命中 http://mirrors.163.com precise-proposed/multiverse Translation-zh_CN
命中 http://mirrors.163.com precise-proposed/multiverse Translation-en
命中 http://mirrors.163.com precise-proposed/restricted Translation-zh_CN
命中 http://mirrors.163.com precise-proposed/restricted Translation-en
命中 http://mirrors.163.com precise-proposed/universe Translation-zh_CN
命中 http://mirrors.163.com precise-proposed/universe Translation-en
命中 http://mirrors.163.com precise-backports/main Translation-en
命中 http://mirrors.163.com precise-backports/multiverse Translation-en
命中 http://mirrors.163.com precise-backports/restricted Translation-en
命中 http://mirrors.163.com precise-backports/universe Translation-en
下载 396 B，耗时 1分 23秒 (4 B/s)
W: 无法下载 http://ppa.launchpad.net/fcitx-team/stable/ubuntu/dists/precise/main/source/Sources  404  Not Found

W: 无法下载 http://ppa.launchpad.net/fcitx-team/stable/ubuntu/dists/precise/main/binary-amd64/Packages  404  Not Found

W: 无法下载 http://ppa.launchpad.net/wengxt/fcitx-nightly/ubuntu/dists/precise/main/source/Sources  404  Not Found

W: 无法下载 http://ppa.launchpad.net/fcitx-team/stable/ubuntu/dists/precise/main/binary-i386/Packages  404  Not Found

W: 无法下载 http://ppa.launchpad.net/wengxt/fcitx-nightly/ubuntu/dists/precise/main/binary-amd64/Packages  404  Not Found

W: 无法下载 http://ppa.launchpad.net/wengxt/fcitx-nightly/ubuntu/dists/precise/main/binary-i386/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.
There has been error while updating 'apt-get', please give it some time and try again later.
For 404 errors check your sources configured in:
    /etc/apt/sources.list
    /etc/apt/sources.list.d/*.list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个怎么解决？着急阿！&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Fri, 01 Nov 2013 16:06:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/15221</link>
      <guid>https://ruby-china.org/topics/15221</guid>
    </item>
    <item>
      <title>rails 执行 修改 时 异常 ：undefined method `name' for nil:NilClass</title>
      <description>&lt;p&gt;controller 中：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def update
        @product = Product.find(params[:id])
        unless request.get?          ##1
            filename=uploadfile(product_params[:image_url])   ##2
        end     ##3
        puts @product.name
        puts product_params
        if @product.update(product_params)
            redirect_to admins_products_path
        else
            render 'edit'
        end
    end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;edit.html.erb 页面：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;%= form_for @product, id: "update_product", url: admins_product_path do |f|%&amp;gt;
    &amp;lt;table border="1"&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;
                产品名称
            &amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;%= f.text_field :name %&amp;gt;
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;   
        &amp;lt;tr&amp;gt;   ##4
            &amp;lt;td&amp;gt;##5
                产品图片##6
            &amp;lt;/td&amp;gt; ##7
            &amp;lt;td&amp;gt;##8
                &amp;lt;%= f.file_field :image_url %&amp;gt;##9
            &amp;lt;/td&amp;gt;##10
        &amp;lt;/tr&amp;gt;##11
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;
                产品价格
            &amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;%= f.text_field :price %&amp;gt;
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;
                产品描述
            &amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;%= f.text_area :description %&amp;gt;
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;input type="submit" value="提交"&amp;gt;
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
&amp;lt;% end %&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明：这里实现的就是 products 管理的功能，在产品创建的时候，图片能够正确提交。
问题：当我执行修改的时候，会出现错误：undefined method `name' for nil:NilClass
          查看 log 发现：##3 之后的两个 puts 都有数据：
44444
{"name"=&amp;gt;"44444", "description"=&amp;gt;"3dsfs", "image_url"=&amp;gt;#, &lt;a href="/original_filename" class="user-mention" title="@original_filename"&gt;&lt;i&gt;@&lt;/i&gt;original_filename&lt;/a&gt;="1111.jpg", &lt;a href="/content_type" class="user-mention" title="@content_type"&gt;&lt;i&gt;@&lt;/i&gt;content_type&lt;/a&gt;="image/jpeg", &lt;a href="/headers" class="user-mention" title="@headers"&gt;&lt;i&gt;@&lt;/i&gt;headers&lt;/a&gt;="Content-Disposition: form-data; name=\"product[image_url]\"; filename=\"1111.jpg\"\r\nContent-Type: image/jpeg\r\n"&amp;gt;, "price"=&amp;gt;"98.0"}&lt;/p&gt;

&lt;p&gt;当我把行##1、2、3、4、5、6、7、8、9、10 都给删除了，就能够正确提交，也就是把图片处理这一块给删除掉&lt;/p&gt;

&lt;p&gt;这个异常如何解决呢？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Thu, 31 Oct 2013 15:00:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/15185</link>
      <guid>https://ruby-china.org/topics/15185</guid>
    </item>
    <item>
      <title>rails model 属性 使用 问题</title>
      <description>&lt;p&gt;现在是用的 rails4.0, 我们 model 生成的时候，就有指定属性
eg: railg g model post title:string&lt;/p&gt;

&lt;p&gt;这里我们在
class Post &amp;lt; ActiveRecord::Base
end
里面并没有看到 title 属性&lt;/p&gt;

&lt;p&gt;但我们可以直接使用，我想知道这里是在那关联上的？
在迁移文件里面有，但那是跟数据库挂钩的。&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Wed, 30 Oct 2013 09:56:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/15144</link>
      <guid>https://ruby-china.org/topics/15144</guid>
    </item>
    <item>
      <title>rails 4.0 图片上传</title>
      <description>&lt;p&gt;现在图片上传都用的什么插件呢？
欢迎推荐&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Tue, 29 Oct 2013 15:33:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/15125</link>
      <guid>https://ruby-china.org/topics/15125</guid>
    </item>
    <item>
      <title>where 查询语句有问题</title>
      <description>&lt;p&gt;rails 4.0
有对象 User
在 controller 里做登录判断：
          def login
              &lt;a href="/user" class="user-mention" title="@user"&gt;&lt;i&gt;@&lt;/i&gt;user&lt;/a&gt; = User.new(user_params)       ##页面登录进来
             user = User.where(["name=? and password = ?", user.name,user    .password])       ##数据库根据用户名和密码查询
            if !user.blank?&lt;br&gt;
                    ##查询有数据
                   puts user.id    ##这里输出 id 报错：undefined method `id' for #&amp;lt;ActiveRecord::Relation::ActiveRecord_Relation_User
            else
                puts "************************"
            end
          end&lt;/p&gt;

&lt;p&gt;private
          def user_params
            params.require(:user).permit(:id, :name, :password)
          end&lt;/p&gt;

&lt;p&gt;这个错误该怎么解决？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Fri, 25 Oct 2013 13:59:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/15025</link>
      <guid>https://ruby-china.org/topics/15025</guid>
    </item>
    <item>
      <title>Rails Model test 问题</title>
      <description>&lt;p&gt;这里用的是 rails 自带的测试，暂不考虑 RSpec&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#post.rb  &lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Post&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&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="n"&gt;validates&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;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                      &lt;span class="ss"&gt;length: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;minimum: &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;#post_test.rb&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'test_helper'&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PostTest&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveSupport&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;TestCase&lt;/span&gt;
    &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"should_save"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="vi"&gt;@post&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Post&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="ss"&gt;:title&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"testtes"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="vi"&gt;@post.save&lt;/span&gt;
      &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="vi"&gt;@post.id&lt;/span&gt;
      &lt;span class="n"&gt;assert&lt;/span&gt; &lt;span class="vi"&gt;@post&lt;/span&gt; &lt;span class="c1"&gt;#@post.save&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"should report error"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="c1"&gt;# some_undefined_variable is not defined elsewhere in the test case&lt;/span&gt;
      &lt;span class="n"&gt;some_undefined_variable&lt;/span&gt;
      &lt;span class="n"&gt;assert&lt;/span&gt; &lt;span class="kp"&gt;true&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;首先，我执行 rake test test/models/post_test.rb test_should_report_error 的时候，会正常显示错误。
当我查看数据库的时候，会发现有两条数据：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql&amp;gt; select * from posts;
+-----------+----------+--------+---------------------+---------------------+
| id        | title    | text   | created_at          | updated_at          |
+-----------+----------+--------+---------------------+---------------------+
| 298486374 | MyString | MyText | 2013-10-18 01:26:28 | 2013-10-18 01:26:28 |
| 980190962 | MyString | MyText | 2013-10-18 01:26:28 | 2013-10-18 01:26:28 |
+-----------+----------+--------+---------------------+---------------------+
2 rows in set (0.00 sec)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不知道这两条数据是怎么来的，
后面当我执行：rake test test/models/post_test.rb test_should_save 的时候，没有报错，但数据库里没有插入数据
始终是上面两条数据的 创建时间和更新时间在变换，puts &lt;a href="/post.id" class="user-mention" title="@post.id"&gt;&lt;i&gt;@&lt;/i&gt;post.id&lt;/a&gt; 的时候 输出的是 980190962 这个 id
哪里有问题？&lt;/p&gt;

&lt;p&gt;我的 model 是通过 rails generate model Post title:string text:text 生成的
数据库配置：&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;development&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;adapter&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql2&lt;/span&gt;
  &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;blog&lt;/span&gt;
  &lt;span class="na"&gt;pool&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
  &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5000&lt;/span&gt;
  &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
  &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;

&lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;adapter&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql2&lt;/span&gt;
  &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;blog_test&lt;/span&gt;
  &lt;span class="na"&gt;pool&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
  &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5000&lt;/span&gt;
  &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
  &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;

&lt;span class="na"&gt;production&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;adapter&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql2&lt;/span&gt;
  &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;blog&lt;/span&gt;
  &lt;span class="na"&gt;pool&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
  &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5000&lt;/span&gt;
  &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
  &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;别的配置就没有修改&lt;/p&gt;
&lt;h2 id="我的问题如下："&gt;我的问题如下：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt; 这两条数据从何而来？&lt;/li&gt;
&lt;li&gt; 我的数据为什么无法插入数据库？&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>tank_lei</author>
      <pubDate>Fri, 18 Oct 2013 09:39:42 +0800</pubDate>
      <link>https://ruby-china.org/topics/14834</link>
      <guid>https://ruby-china.org/topics/14834</guid>
    </item>
    <item>
      <title>mina 部署 bundle 命令找不到</title>
      <description>&lt;p&gt;配置文件：
。。。
  set :user, 'tank'
  set :domain, '10.68.19.20'  #本机
  set :repository, "#{user}@#{domain}:/home/tank/projects/mina/server_git/depot.git"
  set :deploy_to, "/home/tank/projects/mina/server_app"
  set :branch, 'master'
。。。
其余的都是自动生成的。&lt;/p&gt;

&lt;p&gt;都是在本机操作，一个文件夹作为 git 仓库，一个文件夹作为 app 服务器，一个文件夹作为本地开发。&lt;/p&gt;

&lt;p&gt;执行 mina deploy 时出现如下错误：
-----&amp;gt; Creating a temporary build path
-----&amp;gt; Fetching new git commits
-----&amp;gt; Using git branch 'master'
       Cloning into '.'...
       done.
-----&amp;gt; Using this git commit&lt;/p&gt;

&lt;p&gt;tang (ab490d3):
       &amp;gt; none&lt;/p&gt;

&lt;p&gt;-----&amp;gt; Symlinking shared paths
-----&amp;gt; Installing gem dependencies using Bundler
       bash: 行 79: bundle: 未找到命令
 !     ERROR: Deploy failed.
-----&amp;gt; Cleaning up build
       Unlinking current
       OK&lt;/p&gt;

&lt;p&gt;!     Command failed.
       Failed with status 19&lt;/p&gt;

&lt;p&gt;什么情况？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Wed, 24 Apr 2013 12:25:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/10459</link>
      <guid>https://ruby-china.org/topics/10459</guid>
    </item>
    <item>
      <title>capistrano 部署 log 问题</title>
      <description>&lt;p&gt;下面就是任务代码：
namespace :deploy do
           task :start do ; end
           task :stop do ; end
           task :restart, :roles =&amp;gt; :app, :except =&amp;gt; { :no_release =&amp;gt; true }     do
                run "touch #{File.join(current_path,'tmp','restart.txt')}"
            end
           task :seed do
                run "cd #{current_path}; rake db:seed RAILS_ENV=production"
           end
 end&lt;/p&gt;

&lt;p&gt;after "deploy:update_code", :bundle_install
 desc 'install prerequisites'
 task :bundle_install, :roles =&amp;gt; :app do
        run "cd #{release_path} &amp;amp;&amp;amp; bundle install"
 end&lt;/p&gt;

&lt;p&gt;在执行   executing &lt;code&gt;deploy:migrate' 的时候，出现问题，查看了一下：
undefined method&lt;/code&gt;log' for #&lt;a rel="nofollow" target="_blank"&gt;Rails::Paths::Root:0x00000003301620&lt;/a&gt;
大概意思是 log 问题，为到服务器的 releases/ 目录查看当前发布版本，发现没有 log 文件夹，只是一个引用，指向 shared/log 目录，但这个目录下也没有内容，在 releses/2012****/ 下 执行 rake db:migrate 命令，出现错误提示，说是找不到 log 目录。&lt;/p&gt;

&lt;p&gt;这个问题怎么解决？才学习 capistrano！在线等待！！&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Wed, 24 Apr 2013 09:17:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/10452</link>
      <guid>https://ruby-china.org/topics/10452</guid>
    </item>
    <item>
      <title>will_paginate 分页问题</title>
      <description>&lt;p&gt;我看官网上的都是
Post.paginate(.....)
这个 Post 可定是一个 model
如果为没有 model，那为该怎么调用呢？&lt;/p&gt;

&lt;p&gt;查看官网，通过数组的方式好像也不好使
为在 irb 下：
 $ require 'will_paginate'&lt;br&gt;
=&amp;gt;true
 $ arr = [1,2,3,4,5,6]
=&amp;gt; [1, 2, 3, 4, 5, 6]
 $  arr.paginate(:per_page =&amp;gt; 2)
NoMethodError: undefined method `paginate' for [1, 2, 3, 4, 5, 6]:Array
.....&lt;/p&gt;

&lt;p&gt;出现如上错误，这个 demo 是按照源代码里，array.rb 文件里做的，出现错误，没有定义 paginate 方法，我 will_paginate 安装的是 3.0.4 版本&lt;/p&gt;

&lt;p&gt;最终解决了，
需要
require 'will_paginate/array'&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Mon, 15 Apr 2013 10:17:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/10203</link>
      <guid>https://ruby-china.org/topics/10203</guid>
    </item>
    <item>
      <title>如何列出一个对象的所有属性</title>
      <description>&lt;p&gt;别人封装的 gem 包，有没有方法可以查询一个对象的所有属性？就像方法 methods 一样。
比如有一对象 &lt;a href="/test" class="user-mention" title="@test"&gt;&lt;i&gt;@&lt;/i&gt;test&lt;/a&gt;
&lt;a href="/test.methods" class="user-mention" title="@test.methods"&gt;&lt;i&gt;@&lt;/i&gt;test.methods&lt;/a&gt;   可以查询所有方法
有没有可以查看所有属性的呢？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Tue, 02 Apr 2013 09:11:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/9913</link>
      <guid>https://ruby-china.org/topics/9913</guid>
    </item>
    <item>
      <title>单元测试 设置响应时间</title>
      <description>&lt;p&gt;哪个断言 (assert) 方法能实现等待时间？
就是为现在执行一个新增方法后，对象结果还没有返回，后面的跳转方法，就执行了！
有没有方法，可以在执行新增后，等待几秒，再执行跳转方法？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Thu, 28 Mar 2013 11:01:00 +0800</pubDate>
      <link>https://ruby-china.org/topics/9802</link>
      <guid>https://ruby-china.org/topics/9802</guid>
    </item>
    <item>
      <title>gem install rails 出现错误 cannot load such file -- openssl</title>
      <description>&lt;p&gt;$ gem -v
2.0.0
gem 版本 2.0&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ruby &lt;span class="nt"&gt;-v&lt;/span&gt;
ruby 2.0.0p0 &lt;span class="o"&gt;(&lt;/span&gt;2013-02-24 revision 39474&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;x86_64-linux]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ruby 版本也是 2.0
在执行命令&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;rails
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;出现如下错误：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ERROR:  Loading &lt;span class="nb"&gt;command&lt;/span&gt;: &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;LoadError&lt;span class="o"&gt;)&lt;/span&gt;
    cannot load such file &lt;span class="nt"&gt;--&lt;/span&gt; openssl
ERROR:  While executing gem ... &lt;span class="o"&gt;(&lt;/span&gt;NoMethodError&lt;span class="o"&gt;)&lt;/span&gt;
    undefined method &lt;span class="sb"&gt;`&lt;/span&gt;invoke_with_build_args&lt;span class="s1"&gt;' for nil:NilClass
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是什么原因？查看了 openssl 已经是最新版本。
在线求解！&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Wed, 27 Feb 2013 10:45:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/8966</link>
      <guid>https://ruby-china.org/topics/8966</guid>
    </item>
    <item>
      <title>有没有好的权限管理的 gem?</title>
      <description>&lt;p&gt;如题！有没有现成通用的权限管理的 gem？
我看网上搜索有用 cancan 的，不知道该功能如何&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Tue, 22 Jan 2013 15:59:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/8262</link>
      <guid>https://ruby-china.org/topics/8262</guid>
    </item>
    <item>
      <title>封装自己的 gem</title>
      <description>&lt;p&gt;如题，现在 rails 也才上手！
老大让自己 2 天写自己的 gem！
找了会没有找到
有没有这方面的讲解呢？&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Wed, 16 Jan 2013 11:09:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/8105</link>
      <guid>https://ruby-china.org/topics/8105</guid>
    </item>
    <item>
      <title>下了代码，配置看不懂</title>
      <description>&lt;p&gt;初学者上不起！&lt;/p&gt;</description>
      <author>tank_lei</author>
      <pubDate>Thu, 10 Jan 2013 17:01:13 +0800</pubDate>
      <link>https://ruby-china.org/topics/7950</link>
      <guid>https://ruby-china.org/topics/7950</guid>
    </item>
  </channel>
</rss>
