<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>gxlonline (gogogogo)</title>
    <link>https://ruby-china.org/gxlonline</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>请问怎么在部分 action 中跳转已登录用户的 sql 查询（devise）</title>
      <description>&lt;p&gt;网站有几个开放的 api 接口，无需用户登录就可获取数据。&lt;/p&gt;

&lt;p&gt;在有用户登录状态下（devise），访问 api 接口，会自动执行一条 sql，查找当前用户。&lt;/p&gt;

&lt;p&gt;由于 api 接口访问量很大，每次都多执行一次查询，不是太好。&lt;/p&gt;

&lt;p&gt;请问怎么跳转，试过退出登录就没有 User Load。&lt;/p&gt;

&lt;p&gt;试过几个 skip_before_action 好像都没有用。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Started&lt;/span&gt; &lt;span class="no"&gt;GET&lt;/span&gt; &lt;span class="s2"&gt;"/api/nodes/pull?name=test"&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mo"&gt;04&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;03&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0800&lt;/span&gt;
&lt;span class="no"&gt;Processing&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="no"&gt;Api&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;NodesController&lt;/span&gt;&lt;span class="c1"&gt;#pull as HTML&lt;/span&gt;
  &lt;span class="no"&gt;Parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="no"&gt;User&lt;/span&gt; &lt;span class="no"&gt;Load&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="no"&gt;SELECT&lt;/span&gt; &lt;span class="sb"&gt;`users`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt; &lt;span class="no"&gt;FROM&lt;/span&gt; &lt;span class="sb"&gt;`users`&lt;/span&gt; &lt;span class="no"&gt;WHERE&lt;/span&gt; &lt;span class="sb"&gt;`users`&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="sb"&gt;` = 1 ORDER BY `&lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="sb"&gt;` DESC LIMIT 1
  Node Load (0.4ms)  SELECT `&lt;/span&gt;&lt;span class="n"&gt;nodes&lt;/span&gt;&lt;span class="sb"&gt;`.* FROM `&lt;/span&gt;&lt;span class="n"&gt;nodes&lt;/span&gt;&lt;span class="sb"&gt;` WHERE `&lt;/span&gt;&lt;span class="n"&gt;nodes&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="sb"&gt;` = 'test' ORDER BY `&lt;/span&gt;&lt;span class="n"&gt;nodes&lt;/span&gt;&lt;span class="sb"&gt;`.`&lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="sb"&gt;` DESC LIMIT 1
  ↳ app/controllers/api/nodes_controller.rb:19:in `&lt;/span&gt;&lt;span class="n"&gt;set_node&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;span class="no"&gt;Completed&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="no"&gt;OK&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;Views&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="no"&gt;Allocations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2733&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Api::ApiController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActionController&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;skip_before_action&lt;/span&gt; &lt;span class="ss"&gt;:verify_authenticity_token&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Api::NodesController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Api&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;ApiController&lt;/span&gt;
  &lt;span class="n"&gt;before_action&lt;/span&gt; &lt;span class="ss"&gt;:set_node&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;pull&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;node: &lt;/span&gt;&lt;span class="vi"&gt;@node&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

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

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set_node&lt;/span&gt;
      &lt;span class="vi"&gt;@node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_by_name&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;:name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>gxlonline</author>
      <pubDate>Sun, 26 Apr 2020 00:01:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/39799</link>
      <guid>https://ruby-china.org/topics/39799</guid>
    </item>
    <item>
      <title>Rails 6.0 webpacker 生产环境下 fontawesome 图标不显示</title>
      <description>&lt;p&gt;开发环境下一切正常，部署到生产环境 fontawesome 图标不显示，js 和 css 文件加载正常的。&lt;/p&gt;

&lt;p&gt;升级到 rails6+webpacker 不是太懂，搜索了好几天，也没解决问题。请指导一下，谢谢。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2019/edc74a15-1e19-4bc9-a464-1f1e782e63ba.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2019/02f7cb8e-d3c8-44d4-b6cc-884d6f423930.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="Gemfile"&gt;Gemfile&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="s1"&gt;'2.6.2'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'rails'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'~&amp;gt; 6.0.0'&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'webpacker'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'~&amp;gt; 4.0'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="webpacker/stylesheets/application.scss"&gt;webpacker/stylesheets/application.scss&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'~bootstrap/scss/bootstrap'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'bootstrap_custom'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="vg"&gt;$fa&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s1"&gt;'~@fortawesome/fontawesome-free/webfonts'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'~@fortawesome/fontawesome-free/scss/fontawesome'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'~@fortawesome/fontawesome-free/scss/regular'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="vi"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;'~@fortawesome/fontawesome-free/scss/solid'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="config\webpacker.yml"&gt;config\webpacker.yml&lt;/h3&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Note: You must restart bin/webpack-dev-server for changes to take effect&lt;/span&gt;

&lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nl"&gt;&amp;amp;default&lt;/span&gt;
  &lt;span class="na"&gt;source_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app/webpacker&lt;/span&gt;
  &lt;span class="na"&gt;source_entry_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;packs&lt;/span&gt;
  &lt;span class="na"&gt;public_root_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;public&lt;/span&gt;
  &lt;span class="na"&gt;public_output_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;packs&lt;/span&gt;
  &lt;span class="na"&gt;cache_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tmp/cache/webpacker&lt;/span&gt;
  &lt;span class="na"&gt;check_yarn_integrity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="na"&gt;webpack_compile_output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

  &lt;span class="c1"&gt;# Additional paths webpack should lookup modules&lt;/span&gt;
  &lt;span class="c1"&gt;# ['app/assets', 'engine/foo/app/assets']&lt;/span&gt;
  &lt;span class="na"&gt;resolved_paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[]&lt;/span&gt;

  &lt;span class="c1"&gt;# Reload manifest.json on all requests so we reload latest compiled packs&lt;/span&gt;
  &lt;span class="na"&gt;cache_manifest&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

  &lt;span class="c1"&gt;# Extract and emit a css file&lt;/span&gt;
  &lt;span class="na"&gt;extract_css&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="na"&gt;static_assets_extensions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.jpg&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.jpeg&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.png&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.gif&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.tiff&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.ico&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.svg&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.eot&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.otf&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.ttf&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.woff&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.woff2&lt;/span&gt;

  &lt;span class="na"&gt;extensions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.mjs&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.js&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.sass&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.scss&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.css&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.module.sass&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.module.scss&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.module.css&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.png&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.svg&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.gif&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.jpeg&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.jpg&lt;/span&gt;

&lt;span class="na"&gt;development&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;*default&lt;/span&gt;
  &lt;span class="na"&gt;compile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="c1"&gt;# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules&lt;/span&gt;
  &lt;span class="na"&gt;check_yarn_integrity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="c1"&gt;# Reference: https://webpack.js.org/configuration/dev-server/&lt;/span&gt;
  &lt;span class="na"&gt;dev_server&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;https&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&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;3035&lt;/span&gt;
    &lt;span class="na"&gt;public&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;localhost:3035&lt;/span&gt;
    &lt;span class="na"&gt;hmr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="c1"&gt;# Inline should be set to true if using HMR&lt;/span&gt;
    &lt;span class="na"&gt;inline&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;overlay&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;compress&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;disable_host_check&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;use_local_ip&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="na"&gt;quiet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Access-Control-Allow-Origin'&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;
    &lt;span class="na"&gt;watch_options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;ignored&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;**/node_modules/**'&lt;/span&gt;


&lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;*default&lt;/span&gt;
  &lt;span class="na"&gt;compile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="c1"&gt;# Compile test packs to a separate directory&lt;/span&gt;
  &lt;span class="na"&gt;public_output_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;packs-test&lt;/span&gt;

&lt;span class="na"&gt;production&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;*default&lt;/span&gt;

  &lt;span class="c1"&gt;# Production depends on precompilation of packs prior to booting for performance.&lt;/span&gt;
  &lt;span class="na"&gt;compile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;

  &lt;span class="c1"&gt;# Extract and emit a css file&lt;/span&gt;
  &lt;span class="na"&gt;extract_css&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="c1"&gt;# Cache manifest.json for performance&lt;/span&gt;
  &lt;span class="na"&gt;cache_manifest&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="config\webpack\environment.js"&gt;config\webpack\environment.js&lt;/h3&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;environment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@rails/webpacker&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;environment&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;webpack&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;webpack&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Provide&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;webpack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ProvidePlugin&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;$&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jquery&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jquery&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;window.jQuery&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jquery&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;Popper&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;popper.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;default&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="mina deploy 时的提示"&gt;mina deploy 时的提示&lt;/h3&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn &lt;span class="nb"&gt;install &lt;/span&gt;v1.19.1
warning ../../package.json: No license field
warning ../../../package.json: No license field
&lt;span class="o"&gt;[&lt;/span&gt;1/4] Resolving packages...
&lt;span class="o"&gt;[&lt;/span&gt;2/4] Fetching packages...
info fsevents@1.2.9: The platform &lt;span class="s2"&gt;"linux"&lt;/span&gt; is incompatible with this module.
info &lt;span class="s2"&gt;"fsevents@1.2.9"&lt;/span&gt; is an optional dependency and failed compatibility check. Excluding it from installation.
&lt;span class="o"&gt;[&lt;/span&gt;3/4] Linking dependencies...
warning &lt;span class="s2"&gt;" &amp;gt; webpack-dev-server@3.8.0"&lt;/span&gt; has unmet peer dependency &lt;span class="s2"&gt;"webpack@^4.0.0"&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
warning &lt;span class="s2"&gt;"webpack-dev-server &amp;gt; webpack-dev-middleware@3.7.0"&lt;/span&gt; has unmet peer dependency &lt;span class="s2"&gt;"webpack@^4.0.0"&lt;/span&gt;.[4/4] Building fresh packages...
Done &lt;span class="k"&gt;in &lt;/span&gt;8.88s.
       Compiling…
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>gxlonline</author>
      <pubDate>Sun, 13 Oct 2019 08:56:05 +0800</pubDate>
      <link>https://ruby-china.org/topics/39144</link>
      <guid>https://ruby-china.org/topics/39144</guid>
    </item>
    <item>
      <title>Ubuntu 无法连接 ssh  connect to host port 22: Connection timed out</title>
      <description>&lt;p&gt;Google 了一圈，还是没找出原因，水平不高，所以只能来寻求帮助了。&lt;/p&gt;

&lt;p&gt;服务器是阿里云，Ubuntu14.04。&lt;/p&gt;

&lt;p&gt;以前一直使用正常，网站现在也能访问，Ping 也没问题，今天本地运行"mina deploy"时，就一直提示 Connection timed out。&lt;/p&gt;
&lt;h4 id="ssh连不上"&gt;ssh 连不上&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh deploy@IP
&lt;span class="c"&gt;# 这中间要等很久，几分钟。&lt;/span&gt;
ssh: connect to host IP port 22: Connection timed out
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="阿里云后台安全组配正常"&gt;阿里云后台安全组配正常&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;授权策略    协议类型    端口范围    授权类型    授权对象    
允许  自定义 TCP   22/22 地址段访问   0.0.0.0/0
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="登录阿里云自带的管理终端查看（这里又能登录上去，不过是在网页端），防火墙是关闭的。"&gt;登录阿里云自带的管理终端查看（这里又能登录上去，不过是在网页端），防火墙是关闭的。&lt;/h4&gt;&lt;h4 id="端口情况"&gt;端口情况&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;netstat &lt;span class="nt"&gt;-plnt&lt;/span&gt;
Active Internet connections &lt;span class="o"&gt;(&lt;/span&gt;only servers&lt;span class="o"&gt;)&lt;/span&gt;
Proto    Recv-Q    Send-Q   Loca Address    Foreign Address    State    PID/Program name
Tcp    0    0    0.0.0.0:22  0.0.0.0:&lt;span class="k"&gt;*&lt;/span&gt;    LISTEN    906/sshd    
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我在本地用 Ubuntu 和 Windows 连接都是这样。
麻烦各位帮忙看下，还有什么原因会这样，怎么解决，谢谢！&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Sat, 23 Jun 2018 23:18:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/37035</link>
      <guid>https://ruby-china.org/topics/37035</guid>
    </item>
    <item>
      <title>生产环境下二级域名出错 “ blocked by CORS policy” ，字体无法加载</title>
      <description>&lt;h4 id="运行环境"&gt;运行环境&lt;/h4&gt;
&lt;p&gt;Ubuntu14.04, Ruby2.4.1, Rails 5.1.4 , passenger-5.1.11&lt;/p&gt;

&lt;p&gt;使用阿里云 CDN &lt;/p&gt;
&lt;h4 id="出现的问题"&gt;出现的问题&lt;/h4&gt;
&lt;p&gt;在开发环境下：所有资源加载正常。&lt;/p&gt;

&lt;p&gt;在生产环境下：www 域名下加载正常，二级域名下 CSS 和 JS 正常，唯独 bootstrap glyphicons 图标不正常，如下图。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/3d6ab3e8-bd3e-4360-bc46-ed8b41f23d21.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;浏览器控制台&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sign_in:1 Access to Font at &lt;span class="s1"&gt;'http://assets.xxx.com/assets/bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2'&lt;/span&gt; from origin &lt;span class="s1"&gt;'http://crm.xxx.com'&lt;/span&gt; has been blocked by CORS policy: The &lt;span class="s1"&gt;'Access-Control-Allow-Origin'&lt;/span&gt; header has a value &lt;span class="s1"&gt;'http://www.xxx.com'&lt;/span&gt; that is not equal to the supplied origin. Origin &lt;span class="s1"&gt;'http://crm.xxx.com'&lt;/span&gt; is therefore not allowed access.
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="尝试过的解决办法"&gt;尝试过的解决办法&lt;/h4&gt;
&lt;p&gt;使用 gem rack-cors&lt;/p&gt;

&lt;p&gt;config/application.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Application&lt;/span&gt;
  &lt;span class="c1"&gt;# CORS&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;middleware&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert_before&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Cors&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;allow&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;origins&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt;
      &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:headers&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:any&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:methods&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:get&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:delete&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:put&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:patch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:head&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;/code&gt;&lt;/pre&gt;
&lt;p&gt;未果&lt;/p&gt;

&lt;p&gt;ApplicationController&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;ApplicationController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActionController&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;after_action&lt;/span&gt; &lt;span class="ss"&gt;:access_control_headers&lt;/span&gt;
  &lt;span class="kp"&gt;private&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;access_control_headers&lt;/span&gt;
      &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Access-Control-Allow-Origin'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"*"&lt;/span&gt; 
      &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Access-Control-Request-Method'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sx"&gt;%w{GET POST OPTIONS}&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;","&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;未果&lt;/p&gt;

&lt;p&gt;在 HTMl 里加&lt;/p&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;http-equiv=&lt;/span&gt;&lt;span class="s"&gt;"Access-Control-Allow-Origin"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"http://crm.xxx.com"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;未果&lt;/p&gt;

&lt;p&gt;请大家指点一下，谢谢了。&lt;/p&gt;
&lt;h4 id="已解决"&gt;已解决&lt;/h4&gt;
&lt;p&gt;自己把问题搞复杂了，是阿里云 CDN 配置问题。把 Access-Control-Allow-Origin 设置为*即可。
&lt;img src="https://l.ruby-china.com/photo/2017/25d2a893-9471-4a2d-acb3-91660fcb19df.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Fri, 29 Dec 2017 20:50:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/34794</link>
      <guid>https://ruby-china.org/topics/34794</guid>
    </item>
    <item>
      <title>ckeditor + carrierwave-aliyun 开发环境正常，生产环境上传图片提示 InvalidArgument 。</title>
      <description>&lt;h3 id="版本情况"&gt;版本情况&lt;/h3&gt;
&lt;p&gt;Ubuntu14.04, Ruby2.4.1, Rails 5.1.4 , passenger-5.1.11&lt;/p&gt;
&lt;h3 id="情况描述"&gt;情况描述&lt;/h3&gt;
&lt;p&gt;使用 &lt;a href="/huacnlee" class="user-mention" title="@huacnlee"&gt;&lt;i&gt;@&lt;/i&gt;huacnlee&lt;/a&gt; 的 carrierwave-aliyun，在本地用 ckeditor 编辑器上传图片一切正常，并且能够将文件上传至 aliyun oss，但在生产环境下一直提示&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;InvalidArgument The bucket POST must contain the specified 'key'.
If it is specified, please check the order of the fields 59FF1BBE6B85238B77470D50 static.abc.com key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查 aliyun oss 文档 InvalidArgument：”表单域没有指定 key，或者放在了表单域 file 后“。&lt;/p&gt;

&lt;p&gt;另外，在不使用 ckeditor 的情况，直接用普通表单提交，在生产环境下，是能够正常上传文件至 oss。&lt;/p&gt;
&lt;h3 id="config/initializers/carrierwave.rb"&gt;config/initializers/carrierwave.rb&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;CarrierWave&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;storage&lt;/span&gt;           &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;:aliyun&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;aliyun_access_id&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"XXX"&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;aliyun_access_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'XXX'&lt;/span&gt;
  &lt;span class="c1"&gt;# 你需要在 Aliyum OSS 上面提前创建一个 Bucket&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;aliyun_bucket&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"XXX"&lt;/span&gt;
  &lt;span class="c1"&gt;# 是否使用内部连接，true - 使用 Aliyun 主机内部局域网的方式访问  false - 外部网络访问&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;aliyun_internal&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
  &lt;span class="c1"&gt;# 配置存储的地区数据中心，默认: cn-hangzhou&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;aliyun_area&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"cn-shenzhen"&lt;/span&gt;
  &lt;span class="c1"&gt;# 使用自定义域名，设定此项，carrierwave 返回的 URL 将会用自定义域名&lt;/span&gt;
  &lt;span class="c1"&gt;# 自定义域名请 CNAME 到 you_bucket_name.oss-cn-hangzhou.aliyuncs.com (you_bucket_name 是你的 bucket 的名称)&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;aliyun_host&lt;/span&gt;       &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"http://static.XXX.com"&lt;/span&gt;
  &lt;span class="c1"&gt;# Bucket 为私有读取请设置 true，默认 false，以便得到的 URL 是能带有 private 空间访问权限的逻辑&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;aliyun_private_read&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="config/initializers/ckeditor.rb"&gt;config/initializers/ckeditor.rb&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Ckeditor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setup&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'ckeditor/orm/active_record'&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;asset_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'http://static.xxx.com'&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;assets_languages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'zh-cn'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assets_plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'image'&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;h3 id="uploaders/ckeditor_picture_uploader.rb"&gt;uploaders/ckeditor_picture_uploader.rb&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'carrierwave'&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CkeditorPictureUploader&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;Ckeditor&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Backend&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;CarrierWave&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;:aliyun&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="no"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"%Y%m%d"&lt;/span&gt;&lt;span class="p"&gt;)&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;process&lt;/span&gt; &lt;span class="ss"&gt;:extract_dimensions&lt;/span&gt;
  &lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="ss"&gt;:content&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_limit: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;800&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_white_list&lt;/span&gt;
    &lt;span class="no"&gt;Ckeditor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;image_file_types&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;filename&lt;/span&gt;
    &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;secure_token&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;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extension&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;original_filename&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;present?&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="kp"&gt;protected&lt;/span&gt;
      &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;secure_token&lt;/span&gt;
        &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&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="ss"&gt;_secure_token"&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;instance_variable_get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&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;instance_variable_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;SecureRandom&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="app/assets/javascripts/ckeditor/config.js"&gt;app/assets/javascripts/ckeditor/config.js&lt;/h3&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;CKEDITOR&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;editorConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;language&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;zh-CN&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filebrowserImageUploadUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/ckeditor/pictures&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;allowedContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>gxlonline</author>
      <pubDate>Sun, 05 Nov 2017 22:47:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/34517</link>
      <guid>https://ruby-china.org/topics/34517</guid>
    </item>
    <item>
      <title>[已解决] 请问怎么让 Passenger 不以 root 运行？ ( avoid running Passenger as root.)</title>
      <description>&lt;h3 id="情况描述"&gt;情况描述&lt;/h3&gt;
&lt;p&gt;网站部署后，访问域名可看到 Welcome to nginx! 页面，但 Rails 未正常运行。&lt;/p&gt;

&lt;p&gt;提示：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Passenger is running as root, and part&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt; of the passenger root path &lt;span class="o"&gt;(&lt;/span&gt;/home/deploy/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.11&lt;span class="o"&gt;)&lt;/span&gt; can be changed by non-root user&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Change the owner of the path to root, or avoid running Passenger as root.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;谷歌搜到同样的问题 &lt;a href="https://stackoverflow.com/questions/46855906/how-can-i-avoid-phusion-passenger-running-as-root" rel="nofollow" target="_blank"&gt;https://stackoverflow.com/questions/46855906/how-can-i-avoid-phusion-passenger-running-as-root&lt;/a&gt; ，但是没解决办法。&lt;/p&gt;

&lt;p&gt;麻烦大家指点一下，谢谢。&lt;/p&gt;
&lt;h3 id="版本情况"&gt;版本情况&lt;/h3&gt;
&lt;p&gt;Ubuntu14.04, Ruby2.4.1, Rails 5.1.4 , passenger-5.1.11&lt;/p&gt;
&lt;h3 id="/opt/nginx/logs/error.log"&gt;/opt/nginx/logs/error.log&lt;/h3&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt; N 2017-10-25 22:44:33.5315 30646/T1 age/Wat/WatchdogMain.cpp:1267 &lt;span class="o"&gt;]&lt;/span&gt;: Starting Passenger watchdog...                                                                                            
&lt;span class="o"&gt;[&lt;/span&gt; N 2017-10-25 22:44:33.5369 30649/T1 age/Cor/CoreMain.cpp:1165 &lt;span class="o"&gt;]&lt;/span&gt;: Starting Passenger core...                                                                                                    
&lt;span class="o"&gt;[&lt;/span&gt; N 2017-10-25 22:44:33.5370 30649/T1 age/Cor/CoreMain.cpp:249 &lt;span class="o"&gt;]&lt;/span&gt;: Passenger core running &lt;span class="k"&gt;in &lt;/span&gt;multi-application mode.                                                                              
&lt;span class="o"&gt;[&lt;/span&gt; W 2017-10-25 22:44:33.5402 30649/T1 age/Cor/CoreMain.cpp:897 &lt;span class="o"&gt;]&lt;/span&gt;: WARNING: potential privilege escalation vulnerability. Passenger is running as root, and part&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt; of the passenger root path &lt;span class="o"&gt;(&lt;/span&gt;/home/deploy/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.11&lt;span class="o"&gt;)&lt;/span&gt; can be changed by non-root user&lt;span class="o"&gt;(&lt;/span&gt;s&lt;span class="o"&gt;)&lt;/span&gt;:                                                                                                       
The path &lt;span class="s2"&gt;"/home/deploy/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.11"&lt;/span&gt; can be modified by user &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;or applications running as that user&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Change the owner of the path to root, or avoid running Passenger as root.                                                                                                                                                                             
The path &lt;span class="s2"&gt;"/home/deploy/.rvm/gems/ruby-2.4.1/gems"&lt;/span&gt; can be modified by user &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;or applications running as that user&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Change the owner of the path to root, or avoid running Passenger as root.                                                                                                                                                                                              
The path &lt;span class="s2"&gt;"/home/deploy/.rvm/gems/ruby-2.4.1"&lt;/span&gt; can be modified by user &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;or applications running as that user&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Change the owner of the path to root, or avoid running Passenger as root.  
The path &lt;span class="s2"&gt;"/home/deploy/.rvm/gems"&lt;/span&gt; can be modified by user &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;or applications running as that user&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Change the owner of the path to root, or avoid running Passenger as root.             
The path &lt;span class="s2"&gt;"/home/deploy/.rvm"&lt;/span&gt; can be modified by user &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;or applications running as that user&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Change the owner of the path to root, or avoid running Passenger as root.                  
The path &lt;span class="s2"&gt;"/home/deploy"&lt;/span&gt; can be modified by user &lt;span class="s2"&gt;"deploy"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;or applications running as that user&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; Change the owner of the path to root, or avoid running Passenger as root.       
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="ngnix"&gt;ngnix&lt;/h3&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service nginx start 
ps auxw | &lt;span class="nb"&gt;grep &lt;/span&gt;nginx

root     30656  0.0  0.0  32960   860 ?        Ss   22:44   0:00 nginx: master process /opt/nginx/sbin/nginx                                                                                     
deploy   30657  0.0  0.3  33416  3748 ?        S    22:44   0:00 nginx: worker process   
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="解决办法"&gt;解决办法&lt;/h3&gt;
&lt;p&gt;参考：&lt;a href="https://stackoverflow.com/questions/20824071/nginx-welcome-to-nginx-page-keeps-showing" rel="nofollow" target="_blank"&gt;https://stackoverflow.com/questions/20824071/nginx-welcome-to-nginx-page-keeps-showing&lt;/a&gt;
解决办法：&lt;/p&gt;

&lt;p&gt;sudo vim /opt/nginx/conf/nginx.conf&lt;/p&gt;

&lt;p&gt;删除配置文件中以下内容&lt;/p&gt;

&lt;p&gt;# location / {
    #     root   html;
    #     index  index.html index.htm;
    #     passenger_enabled on;
    # }&lt;/p&gt;

&lt;p&gt;重启 nginx 就行了。&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Wed, 25 Oct 2017 23:05:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/34431</link>
      <guid>https://ruby-china.org/topics/34431</guid>
    </item>
    <item>
      <title>mina 部署时 setup 出错，试了各种办法还是不行，请帮忙看看。-_-!!</title>
      <description>&lt;h4 id="提示如下（使用root结果一样）"&gt;提示如下（使用 root 结果一样）&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;➜  XXX git:&lt;span class="o"&gt;(&lt;/span&gt;master&lt;span class="o"&gt;)&lt;/span&gt; ✗ mina setup &lt;span class="nt"&gt;-v&lt;/span&gt;                                                                        
deploy@115.28.150.205&lt;span class="s1"&gt;'s password:                                                                               
-----&amp;gt; Setting up /home/deploy/XXX.com                                                                   
       $ mkdir -p "/home/deploy/XXX.com"                                                                 
       $ mkdir -p "/home/deploy/XXX.com/releases"  
       $ mkdir -p "/home/deploy/XXX.com/shared"                                                          
       $ cd /home/deploy/XXX.com/shared                                                                  
       $ mkdir -p "vendor/bundle"                                                                             
       $ mkdir -p "log"                                                                                       
       $ mkdir -p "tmp/cache"                                                                                 
       $ mkdir -p "public/assets"                                                                             
       $ mkdir -p "log"                                                                                       
       $ mkdir -p "config"                                                                                    
       $ mkdir -p "config"                                                                                    
       $ if [ -x "$(command -v tree)" ]; then tree -d -L 2 "/home/deploy/XXX.com"; else ls -al "/home/dep
loy/XXX.com"; fi                                                                                         
       total 16                                                                                               
       drwxr-xr-x 4 deploy root 4096 Nov 29 12:56 .                                                           
       drwxr-xr-x 6 deploy root 4096 Nov 29 12:56 ..                                                          
       drwxr-xr-x 2 deploy root 4096 Nov 29 12:56 releases                                                    
       drwxr-xr-x 7 deploy root 4096 Nov 29 12:56 shared                                                      
       $ if ! ssh-keygen -H -F github.com &amp;amp;&amp;gt;/dev/null; then                                                   
         ssh-keyscan -t rsa -p 22 -H github.com &amp;gt;&amp;gt; ~/.ssh/known_hosts                                         
       fi                                                                                                     
       Connection to 115.28.150.205 closed.                                                                   

       Elapsed time: 5.72 seconds                        
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="config/deploy.rb"&gt;config/deploy.rb&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rails'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/git'&lt;/span&gt;
&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'mina/rvm'&lt;/span&gt;    &lt;span class="c1"&gt;# for rvm support. (https://rvm.io)&lt;/span&gt;

&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'deploy'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'115.28.150.205'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:deploy_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/home/deploy/XXX.com'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:repository&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'git@github.com:XXX/daquan.git'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:branch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'master'&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:rvm_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/usr/local/rvm/scripts/rvm'&lt;/span&gt;

&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:shared_dirs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:shared_dirs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]).&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'log'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="ss"&gt;:shared_files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:shared_files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]).&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'config/database.yml'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'config/secrets.yml'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rvm:use'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ruby-2.3.3@default'&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:setup&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="c1"&gt;# command %{rbenv install 2.3.0}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s2"&gt;"Deploys the current version to the server."&lt;/span&gt;
&lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;:deploy&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;deploy&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'git:clone'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:link_shared_paths'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'bundle:install'&lt;/span&gt;
    &lt;span class="c1"&gt;#数据库已经migrate&lt;/span&gt;
    &lt;span class="c1"&gt;#invoke :'rails:db_migrate'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'rails:assets_precompile'&lt;/span&gt;
    &lt;span class="n"&gt;invoke&lt;/span&gt; &lt;span class="ss"&gt;:'deploy:cleanup'&lt;/span&gt;

    &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="ss"&gt;:launch&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;in_path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:current_path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{mkdir -p tmp/}&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="sx"&gt;%{touch tmp/restart.txt}&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;h4 id="一直找不出是哪的问题，服务器已经安装相应软件。"&gt;一直找不出是哪的问题，服务器已经安装相应软件。&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;deploy@iZm5ej37sq84m7zum1fn7hZ:~&lt;span class="nv"&gt;$ &lt;/span&gt;ruby &lt;span class="nt"&gt;-v&lt;/span&gt;                                                                     
ruby 2.3.3p222 &lt;span class="o"&gt;(&lt;/span&gt;2016-11-21 revision 56859&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;x86_64-linux]        

deploy@iZm5ej37sq84m7zum1fn7hZ:~&lt;span class="nv"&gt;$ &lt;/span&gt;rvm &lt;span class="nt"&gt;-v&lt;/span&gt;                                                                      
rvm 1.27.0 &lt;span class="o"&gt;(&lt;/span&gt;latest&lt;span class="o"&gt;)&lt;/span&gt; by Wayne E. Seguin &amp;lt;wayneeseguin@gmail.com&amp;gt;, Michal Papis &amp;lt;mpapis@gmail.com&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;https://rvm.
io/]        

deploy@iZm5ej37sq84m7zum1fn7hZ:~&lt;span class="nv"&gt;$ &lt;/span&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;                                                               
git version 1.9.1                                                          
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="/opt/nginx/conf/nginx.conf"&gt;/opt/nginx/conf/nginx.conf&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;user   deploy&lt;span class="p"&gt;;&lt;/span&gt;                                                                                                
worker_processes 1&lt;span class="p"&gt;;&lt;/span&gt;                                                                                           

pid       /var/run/nginx.pid&lt;span class="p"&gt;;&lt;/span&gt;                                                                                 

events &lt;span class="o"&gt;{&lt;/span&gt;                                                                                                      
    worker_connections  1024&lt;span class="p"&gt;;&lt;/span&gt;                                                                                 
&lt;span class="o"&gt;}&lt;/span&gt;                                                                                                             

http &lt;span class="o"&gt;{&lt;/span&gt;                                                                                                        
    passenger_root /usr/local/rvm/gems/ruby-2.3.3/gems/passenger-5.0.30&lt;span class="p"&gt;;&lt;/span&gt;                                      
    passenger_ruby /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby&lt;span class="p"&gt;;&lt;/span&gt;                                              

    include       mime.types&lt;span class="p"&gt;;&lt;/span&gt;                                                                                 
    default_type  application/octet-stream&lt;span class="p"&gt;;&lt;/span&gt;                                                                                                            

    access_log  /var/log/nginx/access.log&lt;span class="p"&gt;;&lt;/span&gt;                                                                    
    error_log   /var/log/nginx/error.log&lt;span class="p"&gt;;&lt;/span&gt;                                                                     

    sendfile        on&lt;span class="p"&gt;;&lt;/span&gt;                                                                                                                                                                             

    &lt;span class="c"&gt;#keepalive_timeout  0;                                                                                    &lt;/span&gt;
    keepalive_timeout  65&lt;span class="p"&gt;;&lt;/span&gt;          

    &lt;span class="nb"&gt;gzip  &lt;/span&gt;on&lt;span class="p"&gt;;&lt;/span&gt;                                                                                                 

    server &lt;span class="o"&gt;{&lt;/span&gt;                                                                                                  
        listen       80&lt;span class="p"&gt;;&lt;/span&gt;                                                                                      
        server_name  www.XXX.com&lt;span class="p"&gt;;&lt;/span&gt;                                                                        
        rails_env    production&lt;span class="p"&gt;;&lt;/span&gt;                                                                              
        root         /home/deploy/XXX.com/current/public&lt;span class="p"&gt;;&lt;/span&gt;                                                

        passenger_enabled on&lt;span class="p"&gt;;&lt;/span&gt;                                                                                                                                                                                                 

    location ~ ^&lt;span class="o"&gt;(&lt;/span&gt;/assets&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;                                                                                   
      access_log        off&lt;span class="p"&gt;;&lt;/span&gt;                                                                                                                                                    
      expires           max&lt;span class="p"&gt;;&lt;/span&gt;                                                                                  
    &lt;span class="o"&gt;}&lt;/span&gt;      
   ...
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>gxlonline</author>
      <pubDate>Tue, 29 Nov 2016 14:11:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/31731</link>
      <guid>https://ruby-china.org/topics/31731</guid>
    </item>
    <item>
      <title>把二级栏目变成二级域名，请问怎么配置好？</title>
      <description>&lt;h3 id="目的"&gt;目的&lt;/h3&gt;
&lt;p&gt;把 &lt;a href="http://www.abc.com/news" rel="nofollow" target="_blank"&gt;http://www.abc.com/news&lt;/a&gt; 变成 &lt;a href="http://news.abc.com" rel="nofollow" target="_blank"&gt;http://news.abc.com&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;相应的 &lt;a href="http://www.abc.com/news/hot" rel="nofollow" target="_blank"&gt;http://www.abc.com/news/hot&lt;/a&gt; 则变成 &lt;a href="http://news.abc.com/hot" rel="nofollow" target="_blank"&gt;http://news.abc.com/hot&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="现在的配置"&gt;现在的配置&lt;/h3&gt;&lt;h4 id="router.rb"&gt;router.rb&lt;/h4&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;draw&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:news&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;except: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:new&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:create&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;:edit&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;collection&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
          &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;'hot/(:page)'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'news#hot'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :hot&lt;/span&gt;
          &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;'search/:value'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'news#search'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :search&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;h4 id="DNS"&gt;DNS&lt;/h4&gt;
&lt;p&gt;服务器是阿里云 ECS，域名绑定 IP 解析。&lt;/p&gt;
&lt;h3 id="问题"&gt;问题&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;请问 router.rb 怎么配置？参考了&lt;a href="https://ruby-china.org/topics/28065" rel="nofollow" target="_blank"&gt;https://ruby-china.org/topics/28065&lt;/a&gt;。
总感觉哪里不对，所有的链接都变成手动硬编码了，但用上 resources 后不是在二级域名下还是有二级目录，如&lt;a href="http://news.abc.com/new/hot" rel="nofollow" target="_blank"&gt;http://news.abc.com/new/hot&lt;/a&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;constraints&lt;/span&gt; &lt;span class="ss"&gt;:subdomain&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="n"&gt;news&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;'/'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'news#index'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :news&lt;/span&gt;
&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;'hot/(:page)'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'news#hot'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :hot&lt;/span&gt;
&lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="s1"&gt;'search/:value'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'news#search'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;as: :search&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;_path 和_url 的该怎么使用？需要每次指定 subdomain 吗？&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;域名解析怎么做？泛解析还是把所有域名都用 CNAME 指向 ECS 的域名？&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;需要配置 ngnix 吗？&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;不好意思问题比较多，新手好多不懂，先谢谢了。&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Mon, 28 Nov 2016 09:50:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/31710</link>
      <guid>https://ruby-china.org/topics/31710</guid>
    </item>
    <item>
      <title>复杂的多对多数据关联设计</title>
      <description>&lt;p&gt;有两个 model：people 和 attributes
每个人有很多个属性，每个属性下对应一个或多个人。&lt;/p&gt;
&lt;table class="table table-bordered table-striped"&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;人&lt;/th&gt;
&lt;th&gt;属性&lt;/th&gt;
&lt;th&gt;人&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;张三&lt;/td&gt;
&lt;td&gt;朋友&lt;/td&gt;
&lt;td&gt;李四  王二&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;请问怎么设计数据表的关联比较好，用 mongodb 或 mysql。&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Fri, 09 Sep 2016 18:04:15 +0800</pubDate>
      <link>https://ruby-china.org/topics/31030</link>
      <guid>https://ruby-china.org/topics/31030</guid>
    </item>
    <item>
      <title>Android 手机 UC 浏览器下 Ruby China 无法正常显示</title>
      <description>&lt;h4 id="问题"&gt;问题&lt;/h4&gt;
&lt;p&gt;大约在半个月前用手机（android）访问 Ruby China 无法正常显示，换 Firefox 和自带浏览器可以正常显示。
一直以为是自己手机问题，今天用同事手机试了一下，也存在同样的问题，但苹果手机用 UC 浏览器又是正常的。
具体症状见下图，欢迎大家一起测试一下。&lt;/p&gt;
&lt;h4 id="手机1： 乐视1S UC浏览器 （刚打开时可正常显示，1S内变成下面这样）"&gt;手机 1：乐视 1S UC 浏览器（刚打开时可正常显示，1S 内变成下面这样）&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/ccc53e5401bf01103f028d64b4bd97d1.jpg" width="300px" alt=""&gt;&lt;/p&gt;
&lt;h4 id="手机2： 魅族metal UC浏览器 （同样问题）"&gt;手机 2：魅族 metal UC 浏览器（同样问题）&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/05e49e78431e14708a553342d5e07595.jpg" width="300px" alt=""&gt;&lt;/p&gt;
&lt;h4 id="手机3： 苹果5S UC浏览器 （正常）"&gt;手机 3：苹果 5S UC 浏览器（正常）&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2016/a8be191d515be36f1fc603311806d561.jpg" width="300px" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/lgn21st" class="user-mention" title="@lgn21st"&gt;&lt;i&gt;@&lt;/i&gt;lgn21st&lt;/a&gt; &lt;a href="/huacnlee" class="user-mention" title="@huacnlee"&gt;&lt;i&gt;@&lt;/i&gt;huacnlee&lt;/a&gt; &lt;a href="/Rei" class="user-mention" title="@Rei"&gt;&lt;i&gt;@&lt;/i&gt;Rei&lt;/a&gt;&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Mon, 16 May 2016 18:45:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/30034</link>
      <guid>https://ruby-china.org/topics/30034</guid>
    </item>
    <item>
      <title>请教怎么将静态资源同步到阿里云 OSS 上</title>
      <description>&lt;h4 id="问题"&gt;问题&lt;/h4&gt;
&lt;p&gt;目前网站部署在阿里云上，不同设备第一次访问都很慢（3~4s），后面就很快了。
估计是第一次需要下载 js（300 多 k）和 css（100 多 k）。&lt;/p&gt;
&lt;h4 id="改进"&gt;改进&lt;/h4&gt;
&lt;p&gt;想把静态资源全部放在阿里云 OSS 上，然后设置 CDN，减轻服务器负担，加快速度。
现在有几个问题不知从何入手，搜了很多帖子也没找到例子，请大家指点一下，谢谢。&lt;/p&gt;
&lt;h4 id="请教"&gt;请教&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;生产环境下，怎么将 precompile 编译的 js 和 css 文件自动推送到 OSS，或者是手动上传的？&lt;/li&gt;
&lt;li&gt;使用 rails_kindeditor 上传的图片怎么直接上传到 OSS？&lt;/li&gt;
&lt;li&gt;js 需要分情况加载吗，比如 kindeditor.js 只在文章编辑页面用到，但生产环境下是打包到一个 app.js 文件里了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="目前做了以下配置"&gt;目前做了以下配置&lt;/h4&gt;
&lt;p&gt;Gemfile&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;"carrierwave"&lt;/span&gt;
&lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;"carrierwave-aliyun"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;config/environments/production.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action_controller&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;asset_host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'http://assets.xxx.com'&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;assets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"assets"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;config/initializers/rails_kindeditor.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;asset_url_prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"http://assets.xxx.com/"&lt;/span&gt; &lt;span class="k"&gt;if&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;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;production?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;config/initializers/carrierwave.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;CarrierWave&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configure&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;storage&lt;/span&gt;           &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;:aliyun&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;aliyun_access_id&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"XXX"&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;aliyun_access_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'XXX'&lt;/span&gt;
  &lt;span class="c1"&gt;# 你需要在 Aliyum OSS 上面提前创建一个 Bucket&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;aliyun_bucket&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"XXX"&lt;/span&gt;
  &lt;span class="c1"&gt;# 是否使用内部连接，true - 使用 Aliyun 主机内部局域网的方式访问  false - 外部网络访问&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;aliyun_internal&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
  &lt;span class="c1"&gt;# 配置存储的地区数据中心，默认: cn-hangzhou&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;aliyun_area&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"oss-cn-qingdao"&lt;/span&gt;
  &lt;span class="c1"&gt;# 使用自定义域名，设定此项，carrierwave 返回的 URL 将会用自定义域名&lt;/span&gt;
  &lt;span class="c1"&gt;# 自定于域名请 CNAME 到 you_bucket_name.oss.aliyuncs.com (you_bucket_name 是你的 bucket 的名称)&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;aliyun_host&lt;/span&gt;       &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"http://assets.xxx.com"&lt;/span&gt;
  &lt;span class="c1"&gt;# Bucket 为私有读取请设置 true，默认 false，以便得到的 URL 是能带有 private 空间访问权限的逻辑&lt;/span&gt;
  &lt;span class="c1"&gt;# config.aliyun_private_read = false&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;同时已经在阿里云 OSS 创建了相应的 Bucket。&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Sun, 15 May 2016 11:11:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/30016</link>
      <guid>https://ruby-china.org/topics/30016</guid>
    </item>
    <item>
      <title>时间全耗在 Views 里，效率太低，请问怎么破？</title>
      <description>&lt;p&gt;做一个社区类网站，由于只有自己一人，界面走简洁路线。
由于前端经验不丰富，有 80% 时间用在了 Views 里。
调试 CSS 最为头痛，Js 略懂一点更没敢用。
请问有没有什么建议？
注：目前已用 bootstrap&lt;/p&gt;</description>
      <author>gxlonline</author>
      <pubDate>Thu, 09 Apr 2015 19:49:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/25075</link>
      <guid>https://ruby-china.org/topics/25075</guid>
    </item>
  </channel>
</rss>
