<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>lgor (花末)</title>
    <link>https://ruby-china.org/lgor</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>关于 Ruby 的正则问题</title>
      <description>&lt;p&gt;我有一批字符串，规律是“数字 + 字母 + 数字 + 字母 + 数字”，数字和字母可以是任意一个或多个，如：1A03F4F、16DC203B5R。我想要正则提取开头的第一段数字、第一段字母、第二段数字、第二段字母等，请教大家该怎么写？&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Thu, 14 Jun 2018 09:58:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/36945</link>
      <guid>https://ruby-china.org/topics/36945</guid>
    </item>
    <item>
      <title>故意访问了一次错误路径，结果所有接口都蹦出来了，这可咋办？</title>
      <description>&lt;p&gt;访问错了一个接口（未登陆、无 token 状态下），发现这个报错信息把我整个项目所有接口都列出来了
&lt;img src="https://l.ruby-china.com/photo/2018/d47afff6-138f-40e1-a139-e2f6338b99e5.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;rails 该怎么做这些错误处理呢？&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Wed, 24 Jan 2018 10:02:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/34934</link>
      <guid>https://ruby-china.org/topics/34934</guid>
    </item>
    <item>
      <title>开发环境的上传图片失败，生产环境却可以，请问哪里出了问题呢？</title>
      <description>&lt;p&gt;使用 vue 的 element-ui 里面的 el-upload 做图片上传，可是在开发环境怎么都不成功，每次都报 422 错误。代码如下&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;img_upload&lt;/span&gt;
  &lt;span class="n"&gt;setting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;SystemSetting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"id,welcome_img"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;setting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update_attributes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;welcome_img: &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;:welcome&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;setting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reload&lt;/span&gt; 
    &lt;span class="n"&gt;success_res&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;msg: &lt;/span&gt;&lt;span class="s1"&gt;'操作成功'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;welcome_img: &lt;/span&gt;&lt;span class="n"&gt;setting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;welcome_img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="n"&gt;fail_res&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;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;el-upload&lt;/span&gt;
          &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"img-uploader"&lt;/span&gt;
          &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"system_settings/img_upload"&lt;/span&gt; 
          &lt;span class="na"&gt;:data=&lt;/span&gt;&lt;span class="s"&gt;"{id: 1}"&lt;/span&gt;
           &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"welcome"&lt;/span&gt;
          &lt;span class="na"&gt;:show-file-list=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
          &lt;span class="na"&gt;:multiple=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;
          &lt;span class="na"&gt;:on-success=&lt;/span&gt;&lt;span class="s"&gt;"handleAvatarSuccess"&lt;/span&gt;
          &lt;span class="na"&gt;:on-error=&lt;/span&gt;&lt;span class="s"&gt;"uploadError"&lt;/span&gt;
          &lt;span class="na"&gt;:before-upload=&lt;/span&gt;&lt;span class="s"&gt;"beforeAvatarUpload"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/el-upload&amp;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;2018-01-04T10:52:36+08:00 &lt;span class="o"&gt;[&lt;/span&gt; INFO] 30780 : Started POST &lt;span class="s2"&gt;"/system_settings/img_upload"&lt;/span&gt; &lt;span class="k"&gt;for &lt;/span&gt;218.19.139.159 at 2018-01-04 10:52:36 +0800
2018-01-04T10:52:36+08:00 &lt;span class="o"&gt;[&lt;/span&gt; INFO] 30780 : Processing by ApplicationController#routing_error as &lt;span class="k"&gt;*&lt;/span&gt;/&lt;span class="k"&gt;*&lt;/span&gt;
2018-01-04T10:52:36+08:00 &lt;span class="o"&gt;[&lt;/span&gt; INFO] 30780 :   Parameters: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"id"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;, &lt;span class="s2"&gt;"welcome"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="c"&gt;#&amp;lt;ActionDispatch::Http::UploadedFile:0x000000069c7ad8 @tempfile=#&amp;lt;Tempfile:/tmp/RackMultipart20180104-30780-daiso.png&amp;gt;, @original_filename="403.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"welcome\"; filename=\"403.png\"\r\nContent-Type: image/png\r\n"&amp;gt;, "path"=&amp;gt;"system_settings/img_upload"}&lt;/span&gt;
2018-01-04T10:52:36+08:00 &lt;span class="o"&gt;[&lt;/span&gt;DEBUG] 30780 : Geokit is using the domain: 
2018-01-04T10:52:36+08:00 &lt;span class="o"&gt;[&lt;/span&gt; WARN] 30780 : Can&lt;span class="s1"&gt;'t verify CSRF token authenticity.
2018-01-04T10:52:36+08:00 [ INFO] 30780 : Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms)


2018-01-04T10:52:36+08:00 [FATAL] 30780 :   
2018-01-04T10:52:36+08:00 [FATAL] 30780 : ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
2018-01-04T10:52:36+08:00 [FATAL] 30780 :   
2018-01-04T10:52:36+08:00 [FATAL] 30780 : actionpack (5.0.1) lib/action_controller/metal/request_forgery_protection.rb:195:in `handle_unverified_request'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_controller/metal/request_forgery_protection.rb:223:in &lt;span class="sb"&gt;`&lt;/span&gt;handle_unverified_request&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_controller/metal/request_forgery_protection.rb:218:in `verify_authenticity_token'&lt;/span&gt;
activesupport &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_support/callbacks.rb:382:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;make_lambda&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:169:in `block (2 levels) in halting'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/abstract_controller/callbacks.rb:12:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="o"&gt;(&lt;/span&gt;2 levels&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &amp;lt;module:Callbacks&amp;gt;&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:170:in `block in halting'&lt;/span&gt;
activesupport &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_support/callbacks.rb:454:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;call&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:454:in `each'&lt;/span&gt;
activesupport &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_support/callbacks.rb:454:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:101:in `__run_callbacks__'&lt;/span&gt;
activesupport &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_support/callbacks.rb:750:in &lt;span class="sb"&gt;`&lt;/span&gt;_run_process_action_callbacks&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/abstract_controller/callbacks.rb:19:in &lt;span class="sb"&gt;`&lt;/span&gt;process_action&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_controller/metal/rescue.rb:20:in `process_action'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_controller/metal/instrumentation.rb:32:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;process_action&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/notifications.rb:164:in `block in instrument'&lt;/span&gt;
activesupport &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_support/notifications/instrumenter.rb:21:in &lt;span class="sb"&gt;`&lt;/span&gt;instrument&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/notifications.rb:164:in `instrument'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_controller/metal/instrumentation.rb:30:in &lt;span class="sb"&gt;`&lt;/span&gt;process_action&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_controller/metal/params_wrapper.rb:248:in `process_action'&lt;/span&gt;
activerecord &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_record/railties/controller_runtime.rb:18:in &lt;span class="sb"&gt;`&lt;/span&gt;process_action&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/abstract_controller/base.rb:126:in `process'&lt;/span&gt;
actionview &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_view/rendering.rb:30:in &lt;span class="sb"&gt;`&lt;/span&gt;process&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_controller/metal.rb:190:in `dispatch'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_controller/metal.rb:262:in &lt;span class="sb"&gt;`&lt;/span&gt;dispatch&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/routing/route_set.rb:32:in &lt;span class="sb"&gt;`&lt;/span&gt;serve&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_dispatch/journey/router.rb:39:in `block in serve'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/journey/router.rb:26:in &lt;span class="sb"&gt;`&lt;/span&gt;each&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_dispatch/journey/router.rb:26:in `serve'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/routing/route_set.rb:725:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
rack (2.0.1) lib/rack/etag.rb:25:in `call'&lt;/span&gt;
rack &lt;span class="o"&gt;(&lt;/span&gt;2.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/rack/conditional_get.rb:38:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
rack (2.0.1) lib/rack/head.rb:12:in `call'&lt;/span&gt;
rack &lt;span class="o"&gt;(&lt;/span&gt;2.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/rack/session/abstract/id.rb:222:in &lt;span class="sb"&gt;`&lt;/span&gt;context&lt;span class="s1"&gt;'
rack (2.0.1) lib/rack/session/abstract/id.rb:216:in `call'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/cookies.rb:613:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
activerecord (5.0.1) lib/active_record/migration.rb:553:in `call'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/callbacks.rb:38:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;call&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:97:in `__run_callbacks__'&lt;/span&gt;
activesupport &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/active_support/callbacks.rb:750:in &lt;span class="sb"&gt;`&lt;/span&gt;_run_call_callbacks&lt;span class="s1"&gt;'
activesupport (5.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/callbacks.rb:36:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/remote_ip.rb:79:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'&lt;/span&gt;
web-console &lt;span class="o"&gt;(&lt;/span&gt;3.4.0&lt;span class="o"&gt;)&lt;/span&gt; lib/web_console/middleware.rb:135:in &lt;span class="sb"&gt;`&lt;/span&gt;call_app&lt;span class="s1"&gt;'
web-console (3.4.0) lib/web_console/middleware.rb:28:in `block in call'&lt;/span&gt;
web-console &lt;span class="o"&gt;(&lt;/span&gt;3.4.0&lt;span class="o"&gt;)&lt;/span&gt; lib/web_console/middleware.rb:18:in &lt;span class="sb"&gt;`&lt;/span&gt;catch&lt;span class="s1"&gt;'
web-console (3.4.0) lib/web_console/middleware.rb:18:in `call'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/show_exceptions.rb:31:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
railties (5.0.1) lib/rails/rack/logger.rb:36:in `call_app'&lt;/span&gt;
railties &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/rails/rack/logger.rb:26:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:in `call'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/request_id.rb:24:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
rack (2.0.1) lib/rack/method_override.rb:22:in `call'&lt;/span&gt;
rack &lt;span class="o"&gt;(&lt;/span&gt;2.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/rack/runtime.rb:22:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
actionpack (5.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'&lt;/span&gt;
actionpack &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/action_dispatch/middleware/static.rb:136:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
rack (2.0.1) lib/rack/sendfile.rb:111:in `call'&lt;/span&gt;
railties &lt;span class="o"&gt;(&lt;/span&gt;5.0.1&lt;span class="o"&gt;)&lt;/span&gt; lib/rails/engine.rb:522:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
rack (2.0.1) lib/rack/handler/webrick.rb:86:in `service'&lt;/span&gt;
/usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:140:in &lt;span class="sb"&gt;`&lt;/span&gt;service&lt;span class="s1"&gt;'
/usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'&lt;/span&gt;
/usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/server.rb:296:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;start_thread&lt;span class="s1"&gt;'
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendering /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendering /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendered /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (2.3ms)
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendering /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendered /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.2ms)
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendering /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendered /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms)
2018-01-04T10:52:36+08:00 [ INFO] 30780 :   Rendered /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (22.1ms)
2018-01-04T10:52:36+08:00 [ERROR] 30780 : 
TypeError: no implicit conversion of Yell::Silencer into String
    from /usr/local/rvm/gems/ruby-2.3.1/gems/web-console-3.4.0/lib/web_console/response.rb:11:in `insert'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/web-console-3.4.0/lib/web_console/response.rb:11:in &lt;span class="sb"&gt;`&lt;/span&gt;write&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/web-console-3.4.0/lib/web_console/middleware.rb:36:in `block in call'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/web-console-3.4.0/lib/web_console/middleware.rb:18:in &lt;span class="sb"&gt;`&lt;/span&gt;catch&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/web-console-3.4.0/lib/web_console/middleware.rb:18:in `call'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/show_exceptions.rb:31:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:36:in `call_app'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:26:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/sprockets-rails-3.2.0/lib/sprockets/rails/quiet_assets.rb:13:in `call'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/request_id.rb:24:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/rack-2.0.1/lib/rack/method_override.rb:22:in `call'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/rack-2.0.1/lib/rack/runtime.rb:22:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/executor.rb:12:in `call'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/actionpack-5.0.1/lib/action_dispatch/middleware/static.rb:136:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/rack-2.0.1/lib/rack/sendfile.rb:111:in `call'&lt;/span&gt;
    from /usr/local/rvm/gems/ruby-2.3.1/gems/railties-5.0.1/lib/rails/engine.rb:522:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
    from /usr/local/rvm/gems/ruby-2.3.1/gems/rack-2.0.1/lib/rack/handler/webrick.rb:86:in `service'&lt;/span&gt;
    from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:140:in &lt;span class="sb"&gt;`&lt;/span&gt;service&lt;span class="s1"&gt;'
    from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'&lt;/span&gt;
    from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/server.rb:296:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;start_thread&lt;span class="s1"&gt;'

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请大家帮忙看看，怎么解决这个问题，谢谢！&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Thu, 04 Jan 2018 10:55:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/34820</link>
      <guid>https://ruby-china.org/topics/34820</guid>
    </item>
    <item>
      <title>请问怎么用 CarrierWave 上传 base64 的图片？或者怎么用 rails 把 base64 的字符串转换成图片存储在服务器？</title>
      <description>&lt;p&gt;我用 CarrierWave 上传文件能成功，但如果把文件换成 base64 字符串就失败了，下面是我的 uploader 代码&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;Base64Uploader&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;CarrierWave&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Uploader&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;CarrierWave&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;MiniMagick&lt;/span&gt;

  &lt;span class="n"&gt;storage&lt;/span&gt; &lt;span class="ss"&gt;:file&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;store_dir&lt;/span&gt;
    &lt;span class="s2"&gt;"uploads/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;underscore&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;mounted_as&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="ss"&gt;:thumb&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;process&lt;/span&gt; &lt;span class="ss"&gt;resize_to_fill: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&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;def&lt;/span&gt; &lt;span class="nf"&gt;extension_whitelist&lt;/span&gt;
    &lt;span class="sx"&gt;%w(jpg jpeg gif png)&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;对应的 model 里面也有写 mount_uploader &lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;mount_uploader&lt;/span&gt; &lt;span class="ss"&gt;:avatar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Base64Uploader&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是如果把接口的 params[:file] 从文件换成 base64 字符串就无法成功。请问是还有哪里需要配置一下吗？还有就是，ruby 里面可以直接把 base64 字符串转成图片吗？
刚学习 rails 几个月，菜鸟一个。测试搜索了好久，都没有成功，心好累，求指点一下&lt;img title=":sob:" alt="😭" src="https://twemoji.ruby-china.com/2/svg/1f62d.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Fri, 24 Nov 2017 11:31:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/34617</link>
      <guid>https://ruby-china.org/topics/34617</guid>
    </item>
    <item>
      <title>求助！在 Windows 下安装 “rmagick” 失败，已经安装了 Windows 版本的 ImageMagick，还是一样报错</title>
      <description>&lt;p&gt;执行“bundle install”时报错：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
D:/develop/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rmagick-2.16.0/ext/RMagick
D:/develop/Ruby23-x64/bin/ruby.exe &lt;span class="nt"&gt;-r&lt;/span&gt; ./siteconf20170810-1028-1n1pw1i.rb
extconf.rb
&lt;span class="k"&gt;***&lt;/span&gt; extconf.rb failed &lt;span class="k"&gt;***&lt;/span&gt;
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file &lt;span class="k"&gt;for &lt;/span&gt;more details.  You may
need configuration options.

Provided configuration options:
        &lt;span class="nt"&gt;--with-opt-dir&lt;/span&gt;
        &lt;span class="nt"&gt;--without-opt-dir&lt;/span&gt;
        &lt;span class="nt"&gt;--with-opt-include&lt;/span&gt;
        &lt;span class="nt"&gt;--without-opt-include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;-dir&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/include
        &lt;span class="nt"&gt;--with-opt-lib&lt;/span&gt;
        &lt;span class="nt"&gt;--without-opt-lib&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;-dir&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/lib
        &lt;span class="nt"&gt;--with-make-prog&lt;/span&gt;
        &lt;span class="nt"&gt;--without-make-prog&lt;/span&gt;
        &lt;span class="nt"&gt;--srcdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
        &lt;span class="nt"&gt;--curdir&lt;/span&gt;
        &lt;span class="nt"&gt;--ruby&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;D:/develop/Ruby23-x64/bin/&lt;span class="si"&gt;$(&lt;/span&gt;RUBY_BASE_NAME&lt;span class="si"&gt;)&lt;/span&gt;
extconf.rb:141:in &lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="s1"&gt;': No such file or directory - identify -version
(Errno::ENOENT)
        from extconf.rb:141:in `configure_compile_options'&lt;/span&gt;
        from extconf.rb:16:in &lt;span class="sb"&gt;`&lt;/span&gt;initialize&lt;span class="s1"&gt;'
        from extconf.rb:548:in `new'&lt;/span&gt;
        from extconf.rb:548:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'

extconf failed, exit code 1

Gem files will remain installed in
D:/develop/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rmagick-2.16.0 for inspection.
Results logged to
D:/develop/Ruby23-x64/lib/ruby/gems/2.3.0/extensions/x64-mingw32/2.3.0/rmagick-2.16.0/gem_make.out

An error occurred while installing rmagick (2.16.0), and Bundler cannot
continue.
Make sure that `gem install rmagick -v '&lt;/span&gt;2.16.0&lt;span class="s1"&gt;'` succeeds before bundling.

In Gemfile:
  rmagick

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后我在网上找了一些资料，说是要先安装“ImageMagick”，我下载安装之后，执行 gem install rmagick -- '--with-opt-dir="C:/Program Files/ImageMagick-7.0.6-Q16"'还是报错：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Temporarily enhancing PATH to include DevKit...
Building native extensions with: &lt;span class="s1"&gt;'--with-opt-dir="C:/Program Files/ImageMagick-7.0.6-Q16"'&lt;/span&gt;
This could take a &lt;span class="k"&gt;while&lt;/span&gt;...
ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.

    current directory: D:/develop/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rmagick-2.16.0/ext/RMagick
D:/develop/Ruby23-x64/bin/ruby.exe &lt;span class="nt"&gt;-r&lt;/span&gt; ./siteconf20170810-5204-f29kli.rb extconf.rb &lt;span class="nt"&gt;--with-opt-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"C:/Program Files/ImageMagick-7.0.6-Q16"&lt;/span&gt;
&lt;span class="k"&gt;***&lt;/span&gt; extconf.rb failed &lt;span class="k"&gt;***&lt;/span&gt;
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file &lt;span class="k"&gt;for &lt;/span&gt;more details.  You may
need configuration options.

Provided configuration options:
        &lt;span class="nt"&gt;--with-opt-dir&lt;/span&gt;
        &lt;span class="nt"&gt;--with-opt-include&lt;/span&gt;
        &lt;span class="nt"&gt;--without-opt-include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;-dir&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/include
        &lt;span class="nt"&gt;--with-opt-lib&lt;/span&gt;
        &lt;span class="nt"&gt;--without-opt-lib&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;-dir&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/lib
        &lt;span class="nt"&gt;--with-make-prog&lt;/span&gt;
        &lt;span class="nt"&gt;--without-make-prog&lt;/span&gt;
        &lt;span class="nt"&gt;--srcdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
        &lt;span class="nt"&gt;--curdir&lt;/span&gt;
        &lt;span class="nt"&gt;--ruby&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;D:/develop/Ruby23-x64/bin/&lt;span class="si"&gt;$(&lt;/span&gt;RUBY_BASE_NAME&lt;span class="si"&gt;)&lt;/span&gt;
extconf.rb:141:in &lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="s1"&gt;': No such file or directory - identify -version (Errno::ENOENT)
        from extconf.rb:141:in `configure_compile_options'&lt;/span&gt;
        from extconf.rb:16:in &lt;span class="sb"&gt;`&lt;/span&gt;initialize&lt;span class="s1"&gt;'
        from extconf.rb:548:in `new'&lt;/span&gt;
        from extconf.rb:548:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'

extconf failed, exit code 1

Gem files will remain installed in D:/develop/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rmagick-2.16.0 for inspection.
Results logged to D:/develop/Ruby23-x64/lib/ruby/gems/2.3.0/extensions/x64-mingw32/2.3.0/rmagick-2.16.0/gem_make.out

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;尤其是这一句：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;extconf.rb:141:in &lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="s1"&gt;': No such file or directory - identify -version (Errno::ENOENT)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好像跟别人的不一样，但实在找不出哪里出错了，请大家帮忙看看，谢谢！&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Thu, 10 Aug 2017 14:51:28 +0800</pubDate>
      <link>https://ruby-china.org/topics/33793</link>
      <guid>https://ruby-china.org/topics/33793</guid>
    </item>
    <item>
      <title>使用 mina 部署项目，遇到问题了，求助！：Sprockets::FileNotFound: couldn't find file 'jquery' with type 'application/javascript'</title>
      <description>&lt;p&gt;项目是 rails 做服务器，vue 写后台管理调接口。在使用 mina 部署的时候，执行“mina staging deploy”命令的时候，报错：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;       Bundle &lt;span class="nb"&gt;complete&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; 35 Gemfile dependencies, 89 gems now installed.
       Gems &lt;span class="k"&gt;in &lt;/span&gt;the &lt;span class="nb"&gt;groups &lt;/span&gt;development and &lt;span class="nb"&gt;test &lt;/span&gt;were not installed.
       Bundled gems are installed into ./vendor/bundle.
       Files /usr/local/ruby/workspace/nextdoor_staging/current/app/assets/config/manifest.js and ./app/assets/config/manifest.js differ
       Files /usr/local/ruby/workspace/nextdoor_staging/current/app/assets/javascripts/application.js and ./app/assets/javascripts/application.js differ
       Files /usr/local/ruby/workspace/nextdoor_staging/current/app/assets/javascripts/cable.js and ./app/assets/javascripts/cable.js differ
       Files /usr/local/ruby/workspace/nextdoor_staging/current/app/assets/stylesheets/application.css and ./app/assets/stylesheets/application.css differ
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Precompiling asset files
       &lt;span class="k"&gt;**&lt;/span&gt; Invoke assets:precompile &lt;span class="o"&gt;(&lt;/span&gt;first_time&lt;span class="o"&gt;)&lt;/span&gt;
       &lt;span class="k"&gt;**&lt;/span&gt; Invoke assets:environment &lt;span class="o"&gt;(&lt;/span&gt;first_time&lt;span class="o"&gt;)&lt;/span&gt;
       &lt;span class="k"&gt;**&lt;/span&gt; Execute assets:environment
       &lt;span class="k"&gt;**&lt;/span&gt; Invoke environment &lt;span class="o"&gt;(&lt;/span&gt;first_time&lt;span class="o"&gt;)&lt;/span&gt;
       &lt;span class="k"&gt;**&lt;/span&gt; Execute environment
       &lt;span class="k"&gt;**&lt;/span&gt; Execute assets:precompile
       rake aborted!
       Sprockets::FileNotFound: couldn&lt;span class="s1"&gt;'t find file '&lt;/span&gt;jquery&lt;span class="s1"&gt;' with type '&lt;/span&gt;application/javascript&lt;span class="s1"&gt;'
       Checked in these paths: 
         /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/app/assets/config
         /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/app/assets/images
         /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/app/assets/javascripts
         /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/app/assets/stylesheets
         /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/assets/javascripts
         /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/assets/stylesheets
         /usr/local/ruby/workspace/nextdoor_staging/shared/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.1/lib/assets/compiled
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/app/assets/javascripts/application.js:13
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/resolve.rb:65:in `resolve!'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:399:in &lt;span class="sb"&gt;`&lt;/span&gt;resolve&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:207:in `process_require_directive'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:180:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;process_directives&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:178:in `each'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:178:in &lt;span class="sb"&gt;`&lt;/span&gt;process_directives&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:83:in `_call'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/directive_processor.rb:68:in &lt;span class="sb"&gt;`&lt;/span&gt;call&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;call_processors&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in &lt;span class="sb"&gt;`&lt;/span&gt;call_processors&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;load&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in &lt;span class="sb"&gt;`&lt;/span&gt;load&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in &lt;span class="sb"&gt;`&lt;/span&gt;load&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/bundle.rb:23:in `block in call'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/utils.rb:200:in &lt;span class="sb"&gt;`&lt;/span&gt;dfs&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/bundle.rb:24:in `call'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in &lt;span class="sb"&gt;`&lt;/span&gt;call_processor&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in &lt;span class="sb"&gt;`&lt;/span&gt;reverse_each&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in &lt;span class="sb"&gt;`&lt;/span&gt;load_from_unloaded&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in &lt;span class="sb"&gt;`&lt;/span&gt;fetch_asset_from_dependency_cache&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;initialize&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in &lt;span class="sb"&gt;`&lt;/span&gt;find_asset&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in `find_all_linked_assets'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:142:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;find&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:228:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;stat_tree&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:212:in `block in stat_directory'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in &lt;span class="sb"&gt;`&lt;/span&gt;each&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `stat_directory'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:227:in &lt;span class="sb"&gt;`&lt;/span&gt;stat_tree&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `each'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;logical_paths&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `each'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in &lt;span class="sb"&gt;`&lt;/span&gt;logical_paths&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:140:in `find'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:185:in &lt;span class="sb"&gt;`&lt;/span&gt;compile&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/rake/sprocketstask.rb:147:in &lt;span class="sb"&gt;`&lt;/span&gt;with_logger&lt;span class="s1"&gt;'
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/sprockets-rails-3.2.0/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'&lt;/span&gt;
       /usr/local/ruby/workspace/nextdoor_staging/tmp/build-150207753616923/vendor/bundle/ruby/2.3.0/gems/rake-12.0.0/exe/rake:27:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;top &lt;span class="o"&gt;(&lt;/span&gt;required&lt;span class="o"&gt;)&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/cli/exec.rb:74:in `load'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/cli/exec.rb:74:in &lt;span class="sb"&gt;`&lt;/span&gt;kernel_load&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/cli/exec.rb:27:in `run'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/cli.rb:365:in &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;exec&lt;/span&gt;&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in &lt;span class="sb"&gt;`&lt;/span&gt;invoke_command&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/vendor/thor/lib/thor.rb:369:in `dispatch'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/cli.rb:22:in &lt;span class="sb"&gt;`&lt;/span&gt;dispatch&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/vendor/thor/lib/thor/base.rb:444:in `start'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/cli.rb:13:in &lt;span class="sb"&gt;`&lt;/span&gt;start&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/exe/bundle:30:in `block in &amp;lt;top (required)&amp;gt;'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/lib/bundler/friendly_errors.rb:121:in &lt;span class="sb"&gt;`&lt;/span&gt;with_friendly_errors&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/gems/bundler-1.15.3/exe/bundle:22:in `&amp;lt;top (required)&amp;gt;'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/bin/bundle:23:in &lt;span class="sb"&gt;`&lt;/span&gt;load&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/bin/bundle:23:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
       /root/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="s1"&gt;'
       /root/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
       Tasks: TOP &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; assets:precompile
       &lt;span class="o"&gt;(&lt;/span&gt;See full trace by running task with &lt;span class="nt"&gt;--trace&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
 &lt;span class="o"&gt;!&lt;/span&gt;     ERROR: Deploy failed.
&lt;span class="nt"&gt;-----&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Cleaning up build
       Unlinking current
       OK
       Connection to 120.77.232.66 closed.

 &lt;span class="o"&gt;!&lt;/span&gt;     Run Error

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;部署配置文件是 staging.rb:
&lt;img src="https://l.ruby-china.com/photo/2017/9eb17ea7-dd17-4370-a49d-711369aab331.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;主要是这句错“Sprockets::FileNotFound: couldn't find file 'jquery' with type 'application/javascript'”，因为是用 vue 写的界面，app/assets 下并没有什么 js 文件，只有这些：
&lt;img src="https://l.ruby-china.com/photo/2017/5a143385-a94b-488e-bcf4-c8630e6e9067.jpg!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;不知道为什么还报这个错。而且“Files /usr/local/ruby/workspace/nextdoor_staging/current/app/assets/config/manifest.js and ./app/assets/config/manifest.js differ”说两个文件不一样，但都是同一个 git 的分支 pull 下来的，应该是一样才对。
求各位解答指点一下，O(∩_∩)O 谢谢&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Mon, 07 Aug 2017 11:55:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/33752</link>
      <guid>https://ruby-china.org/topics/33752</guid>
    </item>
    <item>
      <title>请问 Ruby on Rails 有没有不用 Model 与 SQL 表对应也能直接操作数据库的类？</title>
      <description>&lt;p&gt;刚学 rails 不久，因为之前用过 Java 的 jfinal 框架，两者的 Active Record 是一样的。&lt;/p&gt;

&lt;p&gt;但 Jfinal 里面有 Db 和 Record 这两个类，可以不用预先配置好 sql 表跟 model 的映射，Record 直接能像 model 一样获取数据。&lt;/p&gt;

&lt;p&gt;rails 里面有没有类似的类与方法呢？&lt;/p&gt;

&lt;p&gt;最近开发一个 app 项目，后台是用 rails 写的，但接入了第三方 H5 的页面系统（后台是 Java 写的），为了便于交互，现在把两者的服务器放在同一台主机了，sql 表也放在同一个数据库中，现在想用 rails 读取 H5 系统中原先有的表，该怎么操作呢？&lt;/p&gt;

&lt;p&gt;rails 后台并不需要对 H5 的表做太多操作，只是偶尔有读取和修改的需求，拿来再建立十几二十个 rails 的模型来映射表又有点浪费的感觉，请大神指点！&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Thu, 13 Jul 2017 15:19:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/33487</link>
      <guid>https://ruby-china.org/topics/33487</guid>
    </item>
    <item>
      <title>用 Rails.cache 写入服务器的缓存失效了，请问是什么原因呢</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/0e83e6df-2da0-4f08-ba93-e6044de804ad.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;第一个红框是生成的 key 写入缓存，第二个是用 key 读取测试，可以成功读取到，第三个是用户再次访问时用 key 就读取不到数据了。
写入缓存的方法如下&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;gen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;partner&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;generate_code&lt;/span&gt;
  &lt;span class="c1"&gt;#code = "123456"&lt;/span&gt;
  &lt;span class="n"&gt;key&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cache_key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;partner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="n"&gt;write_cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;outid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;partner&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"read key test--------------------------------"&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"read key test--------------------------------"&lt;/span&gt;
  &lt;span class="n"&gt;code&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cache&lt;/span&gt;
  &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cache&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;write_cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;outid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;partner&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="ss"&gt;outid: &lt;/span&gt;&lt;span class="n"&gt;outid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;appid: &lt;/span&gt;&lt;span class="n"&gt;partner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;appsecret: &lt;/span&gt;&lt;span class="n"&gt;partner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appsecret&lt;/span&gt;
  &lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;to_json&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"write key-----------------------"&lt;/span&gt;

  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;

  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"write key-----------------------"&lt;/span&gt;

  &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;expires_in: &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;minutes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_i&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;读取方法如下
&lt;img src="https://l.ruby-china.com/photo/2017/b99088cc-7914-424c-ae90-487f7bbf4875.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;搞了一个多小时没解决，缓存设置的有效时间是半小时，但是这里立马就失效了，求教&lt;/p&gt;</description>
      <author>lgor</author>
      <pubDate>Sat, 10 Jun 2017 20:29:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/33205</link>
      <guid>https://ruby-china.org/topics/33205</guid>
    </item>
  </channel>
</rss>
