<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>yu3h40 (root@yushao.org)</title>
    <link>https://ruby-china.org/yu3h40</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>passenger 会调用 WEBrick?</title>
      <description>&lt;p&gt;又折腾了一宿...没成果
按照正常的步骤设置好 passenger 和 apache 后.. 访问应用，很久以后出现&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;An&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="n"&gt;occurred&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;starting&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="ss"&gt;preloader: &lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;did&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;write&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;startup&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="no"&gt;Please&lt;/span&gt; &lt;span class="n"&gt;read&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;article&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;more&lt;/span&gt; &lt;span class="n"&gt;information&lt;/span&gt; &lt;span class="n"&gt;about&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;problem&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="no"&gt;Raw&lt;/span&gt; &lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="ss"&gt;output:

&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2015&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;08&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="no"&gt;INFO&lt;/span&gt;  &lt;span class="no"&gt;WEBrick&lt;/span&gt; &lt;span class="mf"&gt;1.3&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;2015&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;08&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="no"&gt;INFO&lt;/span&gt;  &lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="o"&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;2014&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;x86_64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="no"&gt;Sinatra&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;v1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;4.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;taken&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;stage&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="mi"&gt;4567&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;production&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;backup&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="no"&gt;WEBrick&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2015&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="mi"&gt;08&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="no"&gt;INFO&lt;/span&gt;  &lt;span class="no"&gt;WEBrick&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTPServer&lt;/span&gt;&lt;span class="c1"&gt;#start: pid=7508 port=4567&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;后来发现，在等待的这段时间中，访问 4567 端口，可以正常显示 
但不知道是 passenger 与应用的通信问题还是什么.. 为什么会调用了 webrick&lt;/p&gt;

&lt;p&gt;又测试了以下，模块下应用都会出现问题
一个最简单的&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;'sinatra/base'&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Test&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Sinatra&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;get&lt;/span&gt; &lt;span class="s1"&gt;'/'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="s1"&gt;'hello world'&lt;/span&gt;
   &lt;span class="k"&gt;end&lt;/span&gt;
   &lt;span class="n"&gt;run!&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;config.ru &lt;/p&gt;
&lt;h2 id="config.ru"&gt;config.ru&lt;/h2&gt;
&lt;p&gt;require './test'
run Test.
难道是我 config.ru 的配置问题么..&lt;/p&gt;</description>
      <author>yu3h40</author>
      <pubDate>Wed, 21 Jan 2015 08:42:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/23851</link>
      <guid>https://ruby-china.org/topics/23851</guid>
    </item>
    <item>
      <title>Sinatra POST 后 session 丢失</title>
      <description>&lt;p&gt;很普通的一个 POST 到下级目录中，然后 session 验证时发现丢失了
Google 找到&lt;a href="http://stackoverflow.com/questions/12220882/sinatra-session-is-lost-during-post-on-internet-explorer" rel="nofollow" target="_blank"&gt;http://stackoverflow.com/questions/12220882/sinatra-session-is-lost-during-post-on-internet-explorer&lt;/a&gt;
设置&lt;code&gt;set :protection, except: :session_hijacking&lt;/code&gt;后 session 没有丢失
但是报了两句 warning&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;app&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;143&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;warning: &lt;/span&gt;&lt;span class="n"&gt;already&lt;/span&gt; &lt;span class="n"&gt;initialized&lt;/span&gt; &lt;span class="n"&gt;constant&lt;/span&gt; &lt;span class="no"&gt;Game&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;NewTicket&lt;/span&gt;
&lt;span class="n"&gt;app&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;143&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ss"&gt;warning: &lt;/span&gt;&lt;span class="n"&gt;previous&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="no"&gt;NewTicket&lt;/span&gt; &lt;span class="n"&gt;was&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;并且这样设置不会导致 session 被获取后劫持 session 么，与钱挂钩的应用，安全很重要。&lt;/p&gt;

&lt;p&gt;不知道 session 丢失是因为什么引起的。。 &lt;/p&gt;</description>
      <author>yu3h40</author>
      <pubDate>Wed, 14 Jan 2015 23:26:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/23745</link>
      <guid>https://ruby-china.org/topics/23745</guid>
    </item>
    <item>
      <title>ActiveRecord 读取记录问题...</title>
      <description>&lt;p&gt;该算个特别基础的问题了... Google 了好久也没找到应该是没人像我这么笨&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;current&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="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;取得 current 之后想要读取这个记录中 username 的内容.. 应该怎么做
尝试用 current.username 报错
之前代码少的时候是这样&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;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;current_user&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="nb"&gt;id&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;
    &lt;span class="n"&gt;session&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="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;代码一多就特别繁琐，这里应该是有更简单的方法..但是我没找到&lt;br&gt;
thanks! &lt;/p&gt;</description>
      <author>yu3h40</author>
      <pubDate>Wed, 14 Jan 2015 19:31:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/23740</link>
      <guid>https://ruby-china.org/topics/23740</guid>
    </item>
    <item>
      <title>sinatra 中计划任务的问题</title>
      <description>&lt;p&gt;有一个需求是每小时生成一个随机数。
目前用 rufus-scheduler 实现了单独的功能。。但是整合到 sinatra 时出现了问题
如果直接 require 的话会导致 sinatra 应用没有执行..
求解  = =#&lt;/p&gt;</description>
      <author>yu3h40</author>
      <pubDate>Tue, 13 Jan 2015 15:18:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/23708</link>
      <guid>https://ruby-china.org/topics/23708</guid>
    </item>
    <item>
      <title>Apache + Passenger 部署问题</title>
      <description>&lt;p&gt;&lt;code&gt;rvm  ruby 2.2.0
sinatra&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;#简要描述：#
##访问时 preloader 没有正常加载##
###&lt;code&gt;An error occurred while starting up the preloader: it did not write a startup response in time.&lt;/code&gt;###
###访问后在等待超时的过程中。访问 4567 端口正常显示出应用。###&lt;/p&gt;

&lt;p&gt;最基本的 hello world 可以正常部署 
就像这样
`# my_app.rb
require 'sinatra/base'&lt;/p&gt;

&lt;p&gt;class MyApp &amp;lt; Sinatra::Base
  # ... app code here ...
  get '/' do
    'Hello world!'
  end
  # start the server if ruby file executed directly
  run! if app_file == $0
end`&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# config.ru
require './my_app'
run MyApp&lt;/code&gt;
访问时正常出现 Hello world&lt;/p&gt;

&lt;p&gt;但是自己的 sinatra 应用访问时出现 passenger 的错误页，并且等待很久才会出现
&lt;code&gt;Web application could not be started&lt;/code&gt;
&lt;code&gt;[2014-12-27 13:45:45] INFO  WEBrick 1.3.1
[2014-12-27 13:45:45] INFO  ruby 2.2.0 (2014-12-25) [x86_64-linux]
== Sinatra/1.4.5 has taken the stage on 4567 for production with backup from WEBrick
[2014-12-27 13:45:45] INFO  WEBrick::HTTPServer#start: pid=6345 port=4567&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;没有访问时查看端口是这样的
&lt;code&gt;[root@localhost ~]#  netstat -apn|grep 4567
[root@localhost ~]# lsof -i:4567
[root@localhost ~]# 
&lt;/code&gt;
然后访问，一直在等待的过程中。
&lt;code&gt;[root@localhost ~]# lsof -i:4567
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    6551 nobody    7u  IPv4  60206      0t0  TCP *:tram (LISTEN)
[root@localhost ~]#  netstat -apn|grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      6551/ruby           
[root@localhost ~]# 
&lt;/code&gt;
并且在这个过程中在 VPS 上 curl localhost:4567 可以正常访问  本机上访问 4567 端口也正常显示应用&lt;/p&gt;

&lt;p&gt;猜想是因为 firewall 的原因，但如果只是由于 firewall，为什么最基本的 hellowold 可以正常访问&lt;/p&gt;

&lt;p&gt;如果因为我自己的应用的话为什么 rackup 可以正常访问&lt;/p&gt;

&lt;p&gt;在访问远端应用的过程中。在 VPS 上 4567 端口是打开的  并且 curl localhost:4567 正确的
不访问的时候 4567 端口是关闭的。。&lt;/p&gt;

&lt;p&gt;折腾两天了。。。求救&lt;/p&gt;</description>
      <author>yu3h40</author>
      <pubDate>Sat, 27 Dec 2014 22:09:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/23435</link>
      <guid>https://ruby-china.org/topics/23435</guid>
    </item>
    <item>
      <title>rails 数据关联的问题</title>
      <description>&lt;p&gt;设想是做一个博客系统，包含 tags, 完全抛弃分类的形式。
现在纠结在 tags 应该怎么与 post 关联，是使用 has_many 还是 has_many_through 还是 has_and_belongs_to。
需要查询多个 tag 下的文章的情况下用哪种比较好，3Q，刚学 rails 就被多约定少配置搞死了。。&lt;/p&gt;</description>
      <author>yu3h40</author>
      <pubDate>Mon, 22 Dec 2014 19:24:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/23344</link>
      <guid>https://ruby-china.org/topics/23344</guid>
    </item>
  </channel>
</rss>
