<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>steve</title>
    <link>https://ruby-china.org/steve</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>homeland 源码中 list_actions.rb 中的 current_user 在哪里定义的？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;
        &lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;without_nodes&lt;/span&gt;&lt;span class="p"&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;block_node_ids&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;without_nodes&lt;/span&gt;
        &lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;without_users&lt;/span&gt;&lt;span class="p"&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;block_user_ids&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;p&gt;用 def current_user 在代码里能搜到 3 个，但看起来都不像上面那个 current_user 的定义。&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Sat, 04 Jan 2025 16:49:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/44003</link>
      <guid>https://ruby-china.org/topics/44003</guid>
    </item>
    <item>
      <title>Ruby 3 了，thread 和 fiber，哪个更容易发挥多核的性能？</title>
      <description>&lt;p&gt;GIL 仍然存在&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Tue, 23 Feb 2021 23:01:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/40945</link>
      <guid>https://ruby-china.org/topics/40945</guid>
    </item>
    <item>
      <title>如何在 ruby web 应用里创建一个常驻内存保存数据的对象？</title>
      <description>&lt;p&gt;场景是这样。要调用 openapi，首先要调接口获取 token，token 会过期，所以要定期更新 token。
如果是 java spring 实现，无非是定义一个 XxxService 类，加上&lt;a href="/Component" class="user-mention" title="@Component"&gt;&lt;i&gt;@&lt;/i&gt;Component&lt;/a&gt;注解，
定义一个叫 token 的实例变量，定义一个周期执行的方法来更新 token，这样就 Ok 了。&lt;/p&gt;

&lt;p&gt;现在用 ruby sinatra 框架，用$token 全局变量来存储 token，但用全局变量肯定是不好的。坛子
里的 ruby 高手指点下有什么更好的实现方式吗&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Wed, 03 Jul 2019 17:27:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/38781</link>
      <guid>https://ruby-china.org/topics/38781</guid>
    </item>
    <item>
      <title>Ruby HTTP 客户端应该选哪个？</title>
      <description>&lt;p&gt;找了一下 ruby http 客户端，有
&lt;a href="https://github.com/lostisland/faraday" rel="nofollow" target="_blank"&gt;https://github.com/lostisland/faraday&lt;/a&gt;
&lt;a href="https://github.com/jnunemaker/httparty" rel="nofollow" target="_blank"&gt;https://github.com/jnunemaker/httparty&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;在 2019 年，大家都用什么 ruby http 客户端？&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Mon, 10 Jun 2019 12:54:17 +0800</pubDate>
      <link>https://ruby-china.org/topics/38618</link>
      <guid>https://ruby-china.org/topics/38618</guid>
    </item>
    <item>
      <title>网站部署 HTTPS 且登录后，任何 Post 请求都导致 Session 丢失，是因为被认为可能是 CSRF 攻击吗？</title>
      <description>&lt;p&gt;登录之后提交表单发 post 请求，然后 session 丢失，又要重新登录了。
用 nginx 把 http 请求重定向到 https，是否因为 http 协议的变化，被认为可能是 csrf 攻击，从而重置了 session？
后端用的是 sinatra。希望大佬们能指点迷津。&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Fri, 25 May 2018 23:47:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/36831</link>
      <guid>https://ruby-china.org/topics/36831</guid>
    </item>
    <item>
      <title>新手求教，异常：ActiveRecord::ConnectionNotEstablished: No connection pool for User</title>
      <description>&lt;p&gt;我在用 grape 写 api，用了 activerecord，没用 rails&lt;/p&gt;

&lt;p&gt;访问 &lt;a href="http://localhost:9292/api/v1/users/1" rel="nofollow" target="_blank"&gt;http://localhost:9292/api/v1/users/1&lt;/a&gt; 抛异常：
ActiveRecord::ConnectionNotEstablished at /api/v1/users/1
No connection pool for User&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rake&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="ss"&gt;:create&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以在 mysql 中创建数据库&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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;可以在 mysql 中创建表&lt;/p&gt;

&lt;p&gt;说明 rake 执行时能连接 mysql 数据库的，高手指教下查询时为何异常？&lt;/p&gt;

&lt;p&gt;config/database.yml 代码：&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;grape&lt;/span&gt;
  &lt;span class="na"&gt;encoding&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;utf8&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;localhost&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3306&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;steve&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;steve&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;config.ru 代码&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expand_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'../app/api/rest'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;__FILE__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'active_record'&lt;/span&gt;
&lt;span class="n"&gt;use&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;ConnectionAdapters&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;ConnectionManagement&lt;/span&gt;
&lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="no"&gt;Rest&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;API&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;app/api/rest.rb 代码&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;'grape'&lt;/span&gt;
&lt;span class="nb"&gt;require_relative&lt;/span&gt; &lt;span class="s1"&gt;'../models/user'&lt;/span&gt;

&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Rest&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;API&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Grape&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;API&lt;/span&gt;
        &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="s1"&gt;'v1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;using: :path&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt; &lt;span class="ss"&gt;:json&lt;/span&gt;
        &lt;span class="n"&gt;prefix&lt;/span&gt; &lt;span class="ss"&gt;:api&lt;/span&gt;

        &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="ss"&gt;:users&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
            &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s1"&gt;'获取一个用户'&lt;/span&gt;
            &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; 
                &lt;span class="n"&gt;requires&lt;/span&gt; &lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;type: &lt;/span&gt;&lt;span class="no"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;desc: &lt;/span&gt;&lt;span class="s1"&gt;'用户id'&lt;/span&gt;
            &lt;span class="k"&gt;end&lt;/span&gt;
            &lt;span class="n"&gt;route_param&lt;/span&gt; &lt;span class="ss"&gt;:id&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
                &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="k"&gt;do&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="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="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;app/models/user.rb 代码&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;'active_record'&lt;/span&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="nb"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gemfile &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="s1"&gt;'https://ruby.taobao.org'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'grape'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'activerecord'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'active_record_migrations'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'mysql2'&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;rackup&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;ru&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>steve</author>
      <pubDate>Sun, 06 Dec 2015 17:52:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/28293</link>
      <guid>https://ruby-china.org/topics/28293</guid>
    </item>
    <item>
      <title>求助 Puma + Nginx 跑 Rails 出错</title>
      <description>&lt;p&gt;大家好，我按照这个文档 &lt;a href="http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/" rel="nofollow" target="_blank"&gt;http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/&lt;/a&gt; 配置 puma 和 nginx 跑 rails 4.1.1&lt;/p&gt;

&lt;p&gt;访问页面出错：An error occurred. Sorry, the page you are looking for is currently unavailable.
Please try again later.&lt;/p&gt;

&lt;p&gt;nginx 的 error.log 出现如下错误：
[crit] 17027#0: *1 connect() to unix:///home/steve/web/tmp/web.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "&lt;a href="http://unix:///home/steve/web/tmp/web.sock:/" rel="nofollow" target="_blank"&gt;http://unix:///home/steve/web/tmp/web.sock:/&lt;/a&gt;", host: "localhost"&lt;/p&gt;

&lt;p&gt;搜了很久没搞定，大家有什么解决办法吗？&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Sat, 28 Jun 2014 00:55:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/20208</link>
      <guid>https://ruby-china.org/topics/20208</guid>
    </item>
    <item>
      <title>为什么 ruby-china 论坛最多只显示 100 页</title>
      <description>&lt;p&gt;所有的帖子都显示会有性能问题？&lt;/p&gt;</description>
      <author>steve</author>
      <pubDate>Thu, 06 Mar 2014 21:18:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/17704</link>
      <guid>https://ruby-china.org/topics/17704</guid>
    </item>
  </channel>
</rss>
