<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>catfish23 (潜行者)</title>
    <link>https://ruby-china.org/catfish23</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Ruby C 扩展问题 dlsym (已解决。。。)</title>
      <description>&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="no"&gt;VALUE&lt;/span&gt; &lt;span class="nf"&gt;plus&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;VALUE&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;VALUE&lt;/span&gt; &lt;span class="n"&gt;va&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;VALUE&lt;/span&gt; &lt;span class="n"&gt;vb&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

    &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;NUM2INT&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;va&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;NUM2INT&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vb&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;INT2NUM&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Init_test&lt;/span&gt;&lt;span class="o"&gt;(){&lt;/span&gt;
   &lt;span class="no"&gt;VALUE&lt;/span&gt; &lt;span class="n"&gt;lemon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rb_define_module&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Test"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
   &lt;span class="n"&gt;rb_define_module_function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lemon&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"plus"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;RUBY_METHOD_FUNC&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plus&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;操作系统 MacOs &lt;/p&gt;

&lt;p&gt;Ruby 版本  2.3.4&lt;/p&gt;</description>
      <author>catfish23</author>
      <pubDate>Tue, 14 Aug 2018 20:21:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/37333</link>
      <guid>https://ruby-china.org/topics/37333</guid>
    </item>
    <item>
      <title>困惑 Puma 长时间才返回响应</title>
      <description>&lt;p&gt;初次实验 rails 正式环境部署（puma+nginx），总体还是在内网，基本都弄好&lt;/p&gt;

&lt;p&gt;遇到个奇妙的问题，访问相应的地址（如/login），过很久（大约 5 分钟左右）才看到页面，production.log 中显示后端很快就 200 返回了。index 由于没配置，会正常返回 404。&lt;/p&gt;

&lt;p&gt;开始以为是网络问题，后在服务器本机用 curl 测试直接访问 puma 9292 端口，也如此，各种都尝试了，不知道是什么原因，webrick 也是这样情况，开发环境中没有这种问题（macos 系统），曾把 daemonize 设为 false，访问发现象死机了一样 ctrl-c 也无法停止 puma，哪位大神帮忙判断下会是什么情况，&lt;/p&gt;

&lt;p&gt;系统环境信息：CentOS release 6.7 (Final)  jruby 9.1.9（ruby 2.3.3）puma 3.9.1，&lt;/p&gt;

&lt;p&gt;puma.rb 如下：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;
&lt;span class="c1"&gt;# workers Integer(ENV['WEB_CONCURRENCY'] || 1)&lt;/span&gt;
&lt;span class="n"&gt;threads_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'RAILS_MAX_THREADS'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;threads&lt;/span&gt; &lt;span class="n"&gt;threads_count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;threads_count&lt;/span&gt;

&lt;span class="n"&gt;rackup&lt;/span&gt;      &lt;span class="no"&gt;DefaultRackup&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt;        &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'PORT'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;     &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;9292&lt;/span&gt;
&lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'RACK_ENV'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;'production'&lt;/span&gt;

&lt;span class="n"&gt;stdout_redirect&lt;/span&gt; &lt;span class="s1"&gt;'log/puma.log'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'log/puma_error.log'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;bind&lt;/span&gt; &lt;span class="s1"&gt;'unix:///data/appname/tmp/sockets/puma.sock'&lt;/span&gt;
&lt;span class="n"&gt;pidfile&lt;/span&gt; &lt;span class="s1"&gt;'/data/appname/tmp/pids/puma.pid'&lt;/span&gt;
&lt;span class="n"&gt;daemonize&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;

&lt;span class="n"&gt;on_worker_boot&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="c1"&gt;# Worker specific setup for Rails 4.1+&lt;/span&gt;
  &lt;span class="c1"&gt;# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot&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="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;establish_connection&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="n"&gt;preload_app!&lt;/span&gt;
&lt;span class="o"&gt;~&lt;/span&gt;      

&lt;/code&gt;&lt;/pre&gt;</description>
      <author>catfish23</author>
      <pubDate>Mon, 07 Aug 2017 17:26:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/33754</link>
      <guid>https://ruby-china.org/topics/33754</guid>
    </item>
    <item>
      <title>cancancan 求教</title>
      <description>&lt;p&gt;按照文档上写的，遇到个问题&lt;/p&gt;

&lt;p&gt;Controller 内容如下：&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;DepartmentsController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="n"&gt;before_action&lt;/span&gt; &lt;span class="ss"&gt;:set_department&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;only: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:edit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:destroy&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;load_and_authorize_resource&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ability 文件如下：&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;Ability&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;CanCan&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Ability&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Define abilities for the passed in user here. For example:&lt;/span&gt;
    &lt;span class="c1"&gt;#&lt;/span&gt;
      &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="c1"&gt;# guest user (not logged in)&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;elsif&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;blank?&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;:Department&lt;/span&gt;
      &lt;span class="k"&gt;else&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;:Department&lt;/span&gt;
        &lt;span class="n"&gt;cannot&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:destory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:update&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;:Department&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在问题是，用户角色都获取正确，admin 角色没问题，但是 user 角色的没有 Department 的任何权限，load_and_authorize_resource 这句话写了就如此，是有别的什么地方遗漏了么？rails 4.2.3   cancancan2.0, 查了好多文章没发现有什么明显的错漏&lt;/p&gt;</description>
      <author>catfish23</author>
      <pubDate>Fri, 21 Jul 2017 17:38:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/33576</link>
      <guid>https://ruby-china.org/topics/33576</guid>
    </item>
    <item>
      <title>JRuby 里遇到的问题，调用 Java 接口后，RSpec 无法退出 @ jruby9.0.5.0  jdk7u79</title>
      <description>&lt;p&gt;client = RequestServiceHelper::RequestServiceClient.new
      request = Java::JavaLang::String.new(req.to_json.to_s)
      obj_class = Java::JavaClass.for_name('com.vip.vpal.payment.service.RequestModel')
      client.createRequest(JSON.parseObject(request,obj_class))                 #调用 java 接口就无法停止进程&lt;/p&gt;

&lt;p&gt;执行可以得到正确结果&lt;/p&gt;

&lt;p&gt;1 example, 0 failures, 1 passed&lt;/p&gt;

&lt;p&gt;Finished in 1.615 seconds&lt;/p&gt;

&lt;p&gt;本人比较无聊，是用 ruby 做接口测试的，rspec 执行时发现执行调用这句后，进程像挂住了一样，一直没有结束，其他都正常，报告文件也可以打印，就是 cmd 窗口不像以前在 ruby 平台上那样提示结束，那样我无法 jenkins 里去写脚本了，怎么会有这种问题，换过 jdk8 也一样，这个是啥原因，望大神指教！！！&lt;/p&gt;

&lt;p&gt;在命令行主动终止时一直提示&lt;br&gt;
      RSpec is shutting down and will print the summary report... Interrupt again to force quit.，这是 rspec 与 jruby 的兼容问题，还是 jruby 本身的问题。。。&lt;/p&gt;</description>
      <author>catfish23</author>
      <pubDate>Fri, 25 Mar 2016 15:49:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/29461</link>
      <guid>https://ruby-china.org/topics/29461</guid>
    </item>
    <item>
      <title>了解 RSpec 源码的指点下，可以把测试失败的信息记录到数据库吗？</title>
      <description>&lt;p&gt;想把 rspec 的测试结果写入一个平台的数据库，第一步是实现了，也不是很难，在 reporter 里加&lt;/p&gt;

&lt;p&gt;现在想做的是，把出现异常或者说错误时候的信息也记录进去，这个可以做到吗？看了看源码，貌似挺绕的，如果可以实现，在哪个地方加呢？&lt;/p&gt;

&lt;p&gt;新手还请高人多指点下啊，如果不可实现，就放弃这个想法了。&lt;/p&gt;</description>
      <author>catfish23</author>
      <pubDate>Fri, 06 Nov 2015 08:48:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/27976</link>
      <guid>https://ruby-china.org/topics/27976</guid>
    </item>
  </channel>
</rss>
