<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>tailang (tailang)</title>
    <link>https://ruby-china.org/tailang</link>
    <description>我很少发言，但一直默默关注。</description>
    <language>en-us</language>
    <item>
      <title>送一张 2014 PHP 技术峰会的票</title>
      <description>&lt;p&gt;因为工作原因，无法参加，但也不想浪费了，遂准备把票送给有需要的人，时间是明后两天，在上海（普通票  原价 300 + 午餐）。详情见着：&lt;a href="http://www.phpconchina.com/schedule.html" rel="nofollow" target="_blank"&gt;http://www.phpconchina.com/schedule.html&lt;/a&gt;     作为一个 ruby 程序员在 ruby 社区发 php 的票子  貌似不太合适   但真的是诚心的   只在 rubychina  与 douban 上发过此消息    如果拿到票  希望你准时参加&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Fri, 01 Aug 2014 23:06:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/20804</link>
      <guid>https://ruby-china.org/topics/20804</guid>
    </item>
    <item>
      <title>Exception_Notification 无法通过 Sidekiq 发送邮件</title>
      <description>&lt;p&gt;使用 Exception_Notification 这个 gem，当应用出错时，发送邮件给我，默认是通过占用进程来发邮件给我，现在修改通过 Sidekiq 发邮件，但发现 Exception_Notification 并没有通过 Sidekiq 发送邮件，而是任然通过占用那个进程来发送（其它 sidekiq 任务都 ok）
配置文件：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'exception_notification/rails'&lt;/span&gt;

&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'exception_notification/sidekiq'&lt;/span&gt;

&lt;span class="no"&gt;ExceptionNotification&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&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;add_notifier&lt;/span&gt; &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="ss"&gt;:email_prefix&lt;/span&gt;         &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"[APP] "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;:sender_address&lt;/span&gt;       &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="sx"&gt;%{"Notifier" &amp;lt;no-reply@xxx.com&amp;gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;:exception_recipients&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="sx"&gt;%w{tailang@XXX.com}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Exception_Notification&lt;/span&gt; &lt;span class="mf"&gt;4.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;sidekiq&lt;/span&gt; &lt;span class="mf"&gt;2.14&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我也尝试将 sidekiq 换到 3.0.0  但还是无法使用～
哪位遇到过这种问题没&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Tue, 08 Apr 2014 16:02:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/18472</link>
      <guid>https://ruby-china.org/topics/18472</guid>
    </item>
    <item>
      <title>devise，注册后不直接登入</title>
      <description>&lt;p&gt;我使用 devise 实现用户注册/登入，但是 devise 默认用户注册后就直接登入，如何修改配置能是注册后不直接登入～&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Thu, 27 Feb 2014 10:49:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/17520</link>
      <guid>https://ruby-china.org/topics/17520</guid>
    </item>
    <item>
      <title>vim 的 ctrl p，遇到一个奇怪的问题</title>
      <description>&lt;p&gt;ctrl p 在其他项目都可以正常使用。这几天在公司实习，clone 了一个公司的项目源码，用 vim 打开整个项目，这时用 ctrl p 可以搜到项目的全部文件，但是当我用 ctrl p（或其他方式）进入 model 下的某个文件，或其他目录下的某个文件后，再用 ctrl p 只能搜到该目录下的文件，而不能搜到项目中其他文件了。有谁遇到过没？  &lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Wed, 18 Dec 2013 17:14:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/16289</link>
      <guid>https://ruby-china.org/topics/16289</guid>
    </item>
    <item>
      <title>用 mina 部署，部署后如何远程重启服务器？</title>
      <description>&lt;p&gt;环境是 rbenv+nginx+unicorn+mina  现在部署是可以了，但是每次部署后登入主机，再重启服务器有点麻烦。&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Mon, 11 Nov 2013 22:45:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/15467</link>
      <guid>https://ruby-china.org/topics/15467</guid>
    </item>
    <item>
      <title>关于服务器 worker_processes 的设置问题</title>
      <description>&lt;p&gt;新手，租了个单核的服务器，关于 nginx 和 unicorn 的 worker_processes 如何设置   如果设置大了会有什么影响不&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Sat, 09 Nov 2013 21:18:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/15422</link>
      <guid>https://ruby-china.org/topics/15422</guid>
    </item>
    <item>
      <title>关于 vim 中 nerdtree 和 ctrl-p 加载文件的问题</title>
      <description>&lt;p&gt;“加载”这个词可能用的不太恰当
问题是这样的，如果用 vim 打开了一个项目，然后我在终端中在该项目下新建了一个新的文件，然后 vim 中用 nerdtree ctrl-p 是找不到这个新建的文件的，只有用 vim 重新打开这个项目才可以。有什么办法可以解决不？&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Tue, 05 Nov 2013 17:17:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/15320</link>
      <guid>https://ruby-china.org/topics/15320</guid>
    </item>
    <item>
      <title>有的时候百度也蛮人性化的</title>
      <description>&lt;p&gt;宁波被淹了，需要帮助的地方，百度地图都标注出来了......
&lt;img src="//l.ruby-china.com/photo/31d4bc4941a60b6ff97c591766fda5c2.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Sat, 12 Oct 2013 10:13:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/14687</link>
      <guid>https://ruby-china.org/topics/14687</guid>
    </item>
    <item>
      <title>KindEditor 通过 create.js.erb 提交后，不能清除 textarea 中内容</title>
      <description>&lt;p&gt;以前直接用 f.text_area，然后通过 create.js.erb 创建评论，create.js.erb 是这样写的&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#new_comment textarea'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;val&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;提交后就可以去除 text_area 中的内容了。现在使用 kindeditor(用了这个 gem  rails_kindeditor) 后，就没办法定位到 textarea 去清除内容了。应该如何改动？&lt;a href="/Macrow" class="user-mention" title="@Macrow"&gt;&lt;i&gt;@&lt;/i&gt;Macrow&lt;/a&gt; &lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Fri, 27 Sep 2013 17:58:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/14439</link>
      <guid>https://ruby-china.org/topics/14439</guid>
    </item>
    <item>
      <title>cancan，如何将 role 字段设为 admin</title>
      <description>&lt;p&gt;我看了一些别人写的项目，使用 cancan 作为权限，但是一直有个地方不太明白。给 User 表创建 role 字段，默认是 member，所以注册创建新的用户的角色都是 menber 如何将它设为 admin 呢？&lt;br&gt;
添加的 role 字段&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="ss"&gt;:role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:null&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:default&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'member'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;model/user.rb&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;admin?&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;role&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;'admin'&lt;/span&gt; &lt;span class="c1"&gt;#这里的admin哪里来的，如何设置的，在注册的时候没有角色的选项，默认应该都为menber&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;model/ability.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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;new&lt;/span&gt;

    &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="ss"&gt;:read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:all&lt;/span&gt;

    &lt;span class="k"&gt;if&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;admin?&lt;/span&gt;
      &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="ss"&gt;:manage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:all&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="o"&gt;......&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>tailang</author>
      <pubDate>Thu, 25 Jul 2013 23:43:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/12782</link>
      <guid>https://ruby-china.org/topics/12782</guid>
    </item>
    <item>
      <title>heroku 成功 push，无错误提示，但是网站无法显示提示有误</title>
      <description>&lt;p&gt;我尝试了多次，但还是没找到原因&lt;br&gt;
下面是 log：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Counting objects: 9, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Delta compression using up to 2 threads.
Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;6/6&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Writing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;6/6&lt;span class="o"&gt;)&lt;/span&gt;, 594 bytes, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Total 6 &lt;span class="o"&gt;(&lt;/span&gt;delta 4&lt;span class="o"&gt;)&lt;/span&gt;, reused 0 &lt;span class="o"&gt;(&lt;/span&gt;delta 0&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Ruby/Rails app detected
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Using Ruby version: ruby-1.9.3
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Installing dependencies using Bundler version 1.3.2
       Running: bundle &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--without&lt;/span&gt; development:test &lt;span class="nt"&gt;--path&lt;/span&gt; vendor/bundle &lt;span class="nt"&gt;--binstubs&lt;/span&gt; vendor/bundle/bin &lt;span class="nt"&gt;--deployment&lt;/span&gt;
       Fetching gem metadata from https://rubygems.org/..........
       Fetching gem metadata from https://rubygems.org/..
       Using rake &lt;span class="o"&gt;(&lt;/span&gt;10.1.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using i18n &lt;span class="o"&gt;(&lt;/span&gt;0.6.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using multi_json &lt;span class="o"&gt;(&lt;/span&gt;1.7.7&lt;span class="o"&gt;)&lt;/span&gt;
       Using activesupport &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using builder &lt;span class="o"&gt;(&lt;/span&gt;3.0.4&lt;span class="o"&gt;)&lt;/span&gt;
       Using activemodel &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using erubis &lt;span class="o"&gt;(&lt;/span&gt;2.7.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using journey &lt;span class="o"&gt;(&lt;/span&gt;1.0.4&lt;span class="o"&gt;)&lt;/span&gt;
       Using rack &lt;span class="o"&gt;(&lt;/span&gt;1.4.5&lt;span class="o"&gt;)&lt;/span&gt;
       Using rack-cache &lt;span class="o"&gt;(&lt;/span&gt;1.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using rack-test &lt;span class="o"&gt;(&lt;/span&gt;0.6.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using hike &lt;span class="o"&gt;(&lt;/span&gt;1.2.3&lt;span class="o"&gt;)&lt;/span&gt;
       Using tilt &lt;span class="o"&gt;(&lt;/span&gt;1.4.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using sprockets &lt;span class="o"&gt;(&lt;/span&gt;2.2.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using actionpack &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using mime-types &lt;span class="o"&gt;(&lt;/span&gt;1.23&lt;span class="o"&gt;)&lt;/span&gt;
       Using polyglot &lt;span class="o"&gt;(&lt;/span&gt;0.3.3&lt;span class="o"&gt;)&lt;/span&gt;
       Using treetop &lt;span class="o"&gt;(&lt;/span&gt;1.4.14&lt;span class="o"&gt;)&lt;/span&gt;
       Using mail &lt;span class="o"&gt;(&lt;/span&gt;2.5.4&lt;span class="o"&gt;)&lt;/span&gt;
       Using actionmailer &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using arel &lt;span class="o"&gt;(&lt;/span&gt;3.0.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using tzinfo &lt;span class="o"&gt;(&lt;/span&gt;0.3.37&lt;span class="o"&gt;)&lt;/span&gt;
       Using activerecord &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using activeresource &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using bundler &lt;span class="o"&gt;(&lt;/span&gt;1.3.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using rack-ssl &lt;span class="o"&gt;(&lt;/span&gt;1.3.3&lt;span class="o"&gt;)&lt;/span&gt;
       Using json &lt;span class="o"&gt;(&lt;/span&gt;1.8.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using rdoc &lt;span class="o"&gt;(&lt;/span&gt;3.12.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using thor &lt;span class="o"&gt;(&lt;/span&gt;0.18.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using railties &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using rails &lt;span class="o"&gt;(&lt;/span&gt;3.2.13&lt;span class="o"&gt;)&lt;/span&gt;
       Using acts-as-taggable-on &lt;span class="o"&gt;(&lt;/span&gt;2.4.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using acts_as_commentable &lt;span class="o"&gt;(&lt;/span&gt;3.0.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using bcrypt-ruby &lt;span class="o"&gt;(&lt;/span&gt;3.0.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using sass &lt;span class="o"&gt;(&lt;/span&gt;3.2.9&lt;span class="o"&gt;)&lt;/span&gt;
       Using bootstrap-sass &lt;span class="o"&gt;(&lt;/span&gt;2.3.2.0&lt;span class="o"&gt;)&lt;/span&gt;
       Installing will_paginate &lt;span class="o"&gt;(&lt;/span&gt;3.0.4&lt;span class="o"&gt;)&lt;/span&gt;
       Installing bootstrap-will_paginate &lt;span class="o"&gt;(&lt;/span&gt;0.0.9&lt;span class="o"&gt;)&lt;/span&gt;
       Using coderay &lt;span class="o"&gt;(&lt;/span&gt;1.0.9&lt;span class="o"&gt;)&lt;/span&gt;
       Using coffee-script-source &lt;span class="o"&gt;(&lt;/span&gt;1.6.3&lt;span class="o"&gt;)&lt;/span&gt;
       Using execjs &lt;span class="o"&gt;(&lt;/span&gt;1.4.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using coffee-script &lt;span class="o"&gt;(&lt;/span&gt;2.2.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using coffee-rails &lt;span class="o"&gt;(&lt;/span&gt;3.2.2&lt;span class="o"&gt;)&lt;/span&gt;
       Using orm_adapter &lt;span class="o"&gt;(&lt;/span&gt;0.4.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using warden &lt;span class="o"&gt;(&lt;/span&gt;1.2.1&lt;span class="o"&gt;)&lt;/span&gt;
       Using devise &lt;span class="o"&gt;(&lt;/span&gt;2.2.4&lt;span class="o"&gt;)&lt;/span&gt;
       Using jquery-rails &lt;span class="o"&gt;(&lt;/span&gt;3.0.4&lt;span class="o"&gt;)&lt;/span&gt;
       Using mysql2 &lt;span class="o"&gt;(&lt;/span&gt;0.3.11&lt;span class="o"&gt;)&lt;/span&gt;
       Using redcarpet &lt;span class="o"&gt;(&lt;/span&gt;3.0.0&lt;span class="o"&gt;)&lt;/span&gt;
       Using sass-rails &lt;span class="o"&gt;(&lt;/span&gt;3.2.6&lt;span class="o"&gt;)&lt;/span&gt;
       Using uglifier &lt;span class="o"&gt;(&lt;/span&gt;2.1.1&lt;span class="o"&gt;)&lt;/span&gt;
       Your bundle is &lt;span class="nb"&gt;complete&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; It was installed into ./vendor/bundle
       Cleaning up the bundler cache.
       Removing will_paginate &lt;span class="o"&gt;(&lt;/span&gt;3.0.3&lt;span class="o"&gt;)&lt;/span&gt;
       Removing bootstrap-will_paginate &lt;span class="o"&gt;(&lt;/span&gt;0.0.6&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Writing config/database.yml to &lt;span class="nb"&gt;read &lt;/span&gt;from DATABASE_URL
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Preparing app &lt;span class="k"&gt;for &lt;/span&gt;Rails asset pipeline
       Running: rake assets:precompile
       Asset precompilation completed &lt;span class="o"&gt;(&lt;/span&gt;31.80s&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Rails plugin injection
       Injecting rails_log_stdout
       Injecting rails3_serve_static_assets
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Discovering process types
       Procfile declares types      -&amp;gt; &lt;span class="o"&gt;(&lt;/span&gt;none&lt;span class="o"&gt;)&lt;/span&gt;
       Default types &lt;span class="k"&gt;for &lt;/span&gt;Ruby/Rails -&amp;gt; console, rake, web, worker

&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Compiled slug size: 21.0MB
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Launching... &lt;span class="k"&gt;done&lt;/span&gt;, v11
       http://serene-forest-8140.herokuapp.com deployed to Heroku

To git@heroku.com:serene-forest-8140.git
   dd0bf3f..3c43bf4  master -&amp;gt; master

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;浏览器显示：
&lt;img src="//l.ruby-china.com/photo/8c3c8159a8f984f5f949ca5237311f31.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Thu, 18 Jul 2013 23:51:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/12597</link>
      <guid>https://ruby-china.org/topics/12597</guid>
    </item>
    <item>
      <title>使用 acts_as_commentable 给 post 添加评论，comment 对应一个 user，如何获得 user 的相关信息信息</title>
      <description>&lt;p&gt;我用 devise 进行登录注册，生成一个 user 表，我又给 user 表添加了 username 这个字段。&lt;br&gt;
----------------------------------小割一下------------------------------------------------------------------------&lt;br&gt;
现在我用 acts_as_commentable 给 post 添加评论，按照 github 上步骤，我执行了一下步骤&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="n"&gt;comment&lt;/span&gt;
&lt;span class="n"&gt;rake&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="ss"&gt;:migrate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 post 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;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;acts_as_commentable&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;model 的内容分别如下&lt;br&gt;
user.rb&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="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;devise&lt;/span&gt; &lt;span class="ss"&gt;:database_authenticatable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:registerable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="ss"&gt;:recoverable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:rememberable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:trackable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:validatable&lt;/span&gt;

  &lt;span class="n"&gt;attr_accessible&lt;/span&gt; &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:password_confirmation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:remember_me&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="ss"&gt;:username&lt;/span&gt;

  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:username&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;maximum: &lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                   &lt;span class="ss"&gt;uniqueness: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;post.rb&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;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;acts_as_commentable&lt;/span&gt;

  &lt;span class="n"&gt;default_scope&lt;/span&gt; &lt;span class="ss"&gt;:order&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'id DESC'&lt;/span&gt;

  &lt;span class="n"&gt;attr_accessible&lt;/span&gt; &lt;span class="ss"&gt;:body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;comment.rb&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;Comment&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="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;ActsAsCommentable&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Comment&lt;/span&gt;

  &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:commentable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:polymorphic&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;

  &lt;span class="n"&gt;default_scope&lt;/span&gt; &lt;span class="ss"&gt;:order&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'created_at ASC'&lt;/span&gt;


  &lt;span class="c1"&gt;# NOTE: Comments belong to a user&lt;/span&gt;
  &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;

  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:comment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:presence&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;

  &lt;span class="n"&gt;attr_accessible&lt;/span&gt; &lt;span class="ss"&gt;:comment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:title&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;comment 的表单是这样写的&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;% @comment &lt;/span&gt;&lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="vi"&gt;@post.comments.build&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= form_for([@comment.commentable, @comment]) do |f| %&amp;gt;
     &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt; &lt;span class="ss"&gt;:comment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"添加回应"&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
     &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= f.text_area :comment %&amp;gt;&amp;lt;br&amp;gt;
     &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt;
&amp;lt;% end -%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;comment 的 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;@comment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;commentable_record&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;comments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;:comment&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
      &lt;span class="vi"&gt;@comment.user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt; &lt;span class="c1"&gt;#当前用户&lt;/span&gt;

      &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@comment.save&lt;/span&gt;
          &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;commentable_record&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;notice: &lt;/span&gt;&lt;span class="s1"&gt;'创建评论成功'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
          &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="vi"&gt;@comment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;status: :created&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;location: &lt;/span&gt;&lt;span class="n"&gt;commentable_record&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;
          &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;action: :new&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
          &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="vi"&gt;@comment.errors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;status: :unprocessable_entity&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;  
        &lt;span class="k"&gt;end&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="kp"&gt;protected&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;commentable_record&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;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;:post_id&lt;/span&gt;&lt;span class="p"&gt;])&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;最后我想在 view 中显示 comment 的内容和对应的 user 的用户名&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;% @post.comments.each &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;comment&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt;
     &amp;lt;%= comment.user %&amp;gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= comment.comment %&amp;gt;&amp;lt;br&amp;gt;
 &amp;lt;% end -%&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果写成&amp;lt;%= comment.user %&amp;gt;好像显示的是 user 的对象，评论内容可以正常显示，如下图&lt;br&gt;
&lt;img src="//l.ruby-china.com/photo/99489c35e73bffd1139b0c9bb4d2769a.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;如果改成&amp;lt;%= comment.user.username %&amp;gt; 则会提示错误：&lt;br&gt;
&lt;img src="//l.ruby-china.com/photo/2f79b2649b68b60b7915eb40ae39eae3.png" title="" alt=""&gt;  &lt;/p&gt;

&lt;p&gt;请问该如何正确显示 user 表的内容比如 username，email 等&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Sun, 14 Jul 2013 21:09:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/12500</link>
      <guid>https://ruby-china.org/topics/12500</guid>
    </item>
    <item>
      <title>注册页的 errors.full_messages 错误提示样式如何修改</title>
      <description>&lt;p&gt;我用了 devise，bootstrap-sass 这两个 gem&lt;br&gt;
app/views/devise/registrations/new.html.erb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= form_for(resource, :as =&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;resource_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;registration_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resource_name&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="ss"&gt;:html&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;:class&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"form-horizontal"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt;
     &amp;lt;h2&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;注册新用户&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h2&amp;gt;
  &amp;lt;%= render 'shared/e&lt;/span&gt;&lt;span class="n"&gt;rror_messages&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;object: &lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt;
......
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;app/views/shares/_error_messages.html.erb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;% if &lt;/span&gt;&lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;any?&lt;/span&gt; &lt;span class="sx"&gt;%&amp;gt;
    &amp;lt;div id="error_explanation"&amp;gt;&lt;/span&gt; 
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"alert alert-error"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"close"&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dismiss&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"alert"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;times&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&amp;gt;
      &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;有&amp;lt;%= object.errors.count%&amp;gt;个错误导致操作失败:&amp;lt;/s&lt;/span&gt;&lt;span class="n"&gt;trong&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&amp;gt;
      &amp;lt;ul&amp;gt;
      &amp;lt;% object.errors.full_messages.each do |msg| %&amp;gt;
      &amp;lt;li&amp;gt; &amp;lt;%= t(msg) %&amp;gt;

      &amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;% end &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ul&amp;gt;
 &amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后我在自己的 css 中添加了如下：  &lt;/p&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#error_explanation&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f00&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="err"&gt;ul{&lt;/span&gt;
        &lt;span class="nl"&gt;list-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;18px&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.field_with_errors&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="err"&gt;@extend&lt;/span&gt; &lt;span class="err"&gt;.control-group;&lt;/span&gt;
    &lt;span class="err"&gt;@extend&lt;/span&gt; &lt;span class="err"&gt;.error;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但提示的样式如下，仍有红块&lt;br&gt;
&lt;img src="//l.ruby-china.com/photo/c03fcdbaa9e1b3caa810aec4671db104.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;而不是如下面的样式
&lt;img src="//l.ruby-china.com/photo/4ded838865aa5df59183cd3bf9f9c354.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;以前没用 devise，自己写注册表单是没有红块&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Sat, 13 Jul 2013 09:11:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/12474</link>
      <guid>https://ruby-china.org/topics/12474</guid>
    </item>
    <item>
      <title>注册页的 errors.full_messages 错误提示如何转换成中文</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/886a3693727f15b1017f315cd4ea23cc.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Thu, 27 Jun 2013 18:19:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/12046</link>
      <guid>https://ruby-china.org/topics/12046</guid>
    </item>
    <item>
      <title>学 Ruby 就像在买降价的股票?</title>
      <description>&lt;p&gt;标题这句话是一家上海的嵌入式培训公司的培训师刚刚对我说的，听完这话我只能默默地笑了。   &lt;/p&gt;

&lt;p&gt;事情是这样的，那家公司准备在我们学校搞嵌入式培训，因为曾经也学过一段时间，他们就以为我很感兴趣，就一直缠着我，直接到我们寝室找我 3 次。因为他们态度也很好，我不好意思直接回绝，于是委婉的表示不感兴趣，和他们打着太极（或许我错了，应该直接拒绝）。&lt;br&gt;
大概对话：   &lt;/p&gt;

&lt;p&gt;他问我为什么不选这么好就业前景的技术。&lt;br&gt;
wo：现在主要是学习 ruby，看一点 python 什么的，你们那方面只是爱好，平时随便玩玩的。&lt;br&gt;
ta：你是不是彰显自己的个性，ruby 都是日本人在玩，python 都是美国人在玩，国内用的公司就几十家。你学 ruby 就像是在买降价的股票，一般市场上没人会买降价的股票的。这种东西只是一个爆发期，就像安卓一样，爆发期过了，一个浪打过来，这些公司还剩几个，你工作都没了......     &lt;/p&gt;

&lt;p&gt;wo:我只是感兴趣，喜欢用而已......&lt;br&gt;
ta：兴趣往往害死 一个人的......&lt;br&gt;
我彻底无语中......    &lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Fri, 07 Jun 2013 14:16:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/11560</link>
      <guid>https://ruby-china.org/topics/11560</guid>
    </item>
    <item>
      <title>有谁在嵌入式上尝试运行过 ruby 没？</title>
      <description>&lt;p&gt;如题&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Wed, 22 May 2013 20:57:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/11163</link>
      <guid>https://ruby-china.org/topics/11163</guid>
    </item>
    <item>
      <title>Secret Tokens 很多人忽略的安全问题</title>
      <description>&lt;p&gt;今天 clone 了&lt;a href="/daqing" class="user-mention" title="@daqing"&gt;&lt;i&gt;@&lt;/i&gt;daqing&lt;/a&gt;老师的 rabel，准备学习，然后遇到了 Secret Tokens error，感谢&lt;a href="/iBachue" class="user-mention" title="@iBachue"&gt;&lt;i&gt;@&lt;/i&gt;iBachue&lt;/a&gt;的帮助。然后我搜了一些 Secret Tokens 资料，发现这是安全问题（作为初学者，我不是非常明白），下面的资料希望对你有帮助：   &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;每一个 Rails app 都会获取一个很长，而且是随机生成的 secret token，当使用 rails new 的时候，它会被生成并保存在 config/initializers/secret_token.rb。里面的内容类似这样：
view sourceprint?
1   WebStore::Application.config.secret_token = '4f06a7a…72489780f'&lt;/p&gt;

&lt;p&gt;  因为 rails 自动创建 secret token，所以很多开发者会忽略掉它。但是这个 secret token 就像是你的应用的管理员钥匙。如果你拥有了 secret token，那样伪造会话和提升权限就会变得很容易。这是其中一个十分重要而且敏感的数据需要去保护的。加密是保护你的钥匙的最佳办法。&lt;/p&gt;

&lt;p&gt;  但是很不幸，rails 并不能很好的处理这些 secret token。secret_token.rb 文件会被加入到版本控制当中，复制到 GitHub，CI 服务器和每一个开发人员的电脑。&lt;/p&gt;

&lt;p&gt;  最佳实践：在不同的环境中使用不同 secret token。在应用中插入 ENV 变量就可以实现这个目的。另外一个替代方法是，在部署过程中把 secret token 作为符号链接。&lt;/p&gt;

&lt;p&gt;  修复：至少，rails 必须通过.gitignore 来忽略 config/initializers /secret_token.rb 文件。开发人员在部署的时候，用一个符号链接来替代生产环境的 token，或者把初始化器转变为使用 ENV 变量来初始化（例如 Heroku）&lt;/p&gt;

&lt;p&gt;  我将会进一步提出 rails 创建一个保存 serect token 的机制方案。我们有大量的库提供安装指引如何把 secret token 加入到初始化器中，但是这并不是一个好的实践。同时，至少还有俩个解决方案来处理这个问题：ENV 变量和初始化器的符号链接。&lt;/p&gt;

&lt;p&gt;  rails 提供一个简单的 API 给开发人员来管理 secret token，而且后台还是可插拔的（就像缓存和会话存储）。 &lt;/p&gt;
&lt;/blockquote&gt;</description>
      <author>tailang</author>
      <pubDate>Fri, 10 May 2013 01:59:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/10869</link>
      <guid>https://ruby-china.org/topics/10869</guid>
    </item>
    <item>
      <title>出现 config.secret_token error 的原因 / 原理？</title>
      <description>&lt;p&gt;在 github 上 clone 了一个项目，准备学习，但是 rails s 时出现下面的错误：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ArgumentError &lt;span class="o"&gt;(&lt;/span&gt;A secret is required to generate an integrity &lt;span class="nb"&gt;hash &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;cookie session data. Use config.secret_token &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"some secret phrase of at least 30 characters"&lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;config/initializers/secret_token.rb&lt;span class="o"&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;&lt;span class="nv"&gt;$rake&lt;/span&gt; secret
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是还是不太明白为什么出现这个错误&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Fri, 10 May 2013 00:36:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/10866</link>
      <guid>https://ruby-china.org/topics/10866</guid>
    </item>
    <item>
      <title>Linux 下相对较新的 Sublime Text 2 中文输入解决方法</title>
      <description>&lt;p&gt;翻看了一些以前的帖子，尝试了一下，不能解决 sublime-text2 的中文输入问题，可能是我的环境或 fcitx 版本问题，后来找到一个相对比较好的解决方法。我是在 fcitx 测试的，在 ibus 下没试过。&lt;br&gt;
环境：mint14,fcitx-4.2.6.1 
光标可跟踪
&lt;a href="http://blog.caoping1990.cn/blog/2013/04/02/sublime-textzh/" rel="nofollow" target="_blank"&gt;http://blog.caoping1990.cn/blog/2013/04/02/sublime-textzh/&lt;/a&gt;   &lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/242685ae84f688602bc566218c7df421.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Tue, 02 Apr 2013 13:19:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/9921</link>
      <guid>https://ruby-china.org/topics/9921</guid>
    </item>
    <item>
      <title>PostgreSQL 新建用户无法登入</title>
      <description>&lt;p&gt;第一次使用，网上也看了一些博文，但还是没有解决。
1.具有管理权限的 postgres 用户可以登入：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$psql&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; postgres &lt;span class="nt"&gt;-h&lt;/span&gt; localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;登入成功
2.创建新用户（在 shell 命令行中创建）&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; postgres createuser &lt;span class="nt"&gt;-P&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后为新建的用户添加密码有创建数据库权限，不是 superuser
3.\du 查看新用户已经存在
4.在 shell 中登入新用户&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;psql &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;并输入密码
提示错误：
psql: FATAL:  database "test" does not exist&lt;/p&gt;

&lt;p&gt;我按照网上所说将修改/etc/postgresql/9.1/main/pg_hba.conf 文件，将&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;local all all peer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改为&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;local all all md5
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但还是失败。&lt;/p&gt;</description>
      <author>tailang</author>
      <pubDate>Sun, 17 Mar 2013 15:58:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/9505</link>
      <guid>https://ruby-china.org/topics/9505</guid>
    </item>
  </channel>
</rss>
