<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>aini (Alan)</title>
    <link>https://ruby-china.org/aini</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Git clone 下来之后 git status 发现有好多删除的变动和一些新建的文件</title>
      <description>&lt;p&gt;今天 clone 项目，clone 下来之后 git status 发现有好多删除的变动和一些新建的文件。  （之前本机上是有这个项目的，我是删除了重新 clone 的。）&lt;br&gt;
我换了一目录 clone 还是一样。&lt;br&gt;
我很费解，新 clone 下来的项目怎么会有修改呢。&lt;br&gt;
求解！！！！   &lt;/p&gt;</description>
      <author>aini</author>
      <pubDate>Wed, 31 Oct 2018 11:13:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/37711</link>
      <guid>https://ruby-china.org/topics/37711</guid>
    </item>
    <item>
      <title>macOS 安装 Ruby 报错</title>
      <description>&lt;p&gt;&lt;strong&gt;Mac 运行 rvm install 2.5.1 报错如下&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Error running &lt;span class="s1"&gt;'./configure --prefix=/Users/shan/.rvm/rubies/ruby-2.5.1 --with-opt-dir=/usr/local/opt/libyaml:/usr/local/opt/readline:/usr/local/opt/libksba:/usr/local/opt/openssl@1.1 --disable-install-doc --enable-shared'&lt;/span&gt;,
please &lt;span class="nb"&gt;read&lt;/span&gt; /Users/shan/.rvm/log/1540623603_ruby-2.5.1/configure.log
There has been an error &lt;span class="k"&gt;while &lt;/span&gt;running configure. Halting the installation.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还有一条黄色的警告&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;No binary rubies available &lt;span class="k"&gt;for&lt;/span&gt;: osx/10.13/x86_64/ruby-2.5.1.
Continuing with compilation. Please &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s1"&gt;'rvm help mount'&lt;/span&gt; to get more information on binary rubies.
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>aini</author>
      <pubDate>Sat, 27 Oct 2018 15:09:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/37687</link>
      <guid>https://ruby-china.org/topics/37687</guid>
    </item>
    <item>
      <title>图片上传的 CarrierWave 报错</title>
      <description>&lt;h3 id="问题详情"&gt;问题详情&lt;/h3&gt;
&lt;p&gt;上传图片配置在本地是正常的，push 到 heroku 之后就报错了，报错信息如下：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;remote:  &lt;span class="o"&gt;!&lt;/span&gt;
remote:  &lt;span class="o"&gt;!&lt;/span&gt;     Precompiling assets failed.
remote:  &lt;span class="o"&gt;!&lt;/span&gt;
remote:  &lt;span class="o"&gt;!&lt;/span&gt;     Push rejected, failed to compile Ruby app.
remote: 
remote:  &lt;span class="o"&gt;!&lt;/span&gt;     Push failed
remote: Verifying deploy...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 stackoverflow 的解决方式如下：&lt;br&gt;
&lt;strong&gt;&lt;em&gt;config/application.rb&lt;/em&gt;&lt;/strong&gt;&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;assets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize_on_precompile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改之后再次 push 报错依然，运行如下命令查看一下 heroku 的日志&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;heroku logs &lt;span class="nt"&gt;--tail&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-09-21T03:02:11.684933+00:00 app[web.1]: &lt;span class="o"&gt;[&lt;/span&gt;4] &lt;span class="o"&gt;!&lt;/span&gt; Unable to load application: NameError: uninitialized constant CarrierWave::Storage::Fog
2018-09-21T03:02:11.685158+00:00 app[web.1]: bundler: failed to load &lt;span class="nb"&gt;command&lt;/span&gt;: puma &lt;span class="o"&gt;(&lt;/span&gt;/app/vendor/bundle/ruby/2.4.0/bin/puma&lt;span class="o"&gt;)&lt;/span&gt;
2018-09-21T03:02:11.685334+00:00 app[web.1]: NameError: uninitialized constant CarrierWave::Storage::Fog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;stackoverflow 上的解决方式试过一遍了还是报这个错误&lt;br&gt;
[ &lt;a href="https://stackoverflow.com/questions/29915571/nameerror-uninitialized-constant-carrierwavestoragefog-in-heroku-logs" rel="nofollow" target="_blank"&gt;https://stackoverflow.com/questions/29915571/nameerror-uninitialized-constant-carrierwavestoragefog-in-heroku-logs&lt;/a&gt; ]&lt;br&gt;
[ &lt;a href="https://stackoverflow.com/questions/35174399/nameerror-uninitialized-constant-carrierwavestoragefog" rel="nofollow" target="_blank"&gt;https://stackoverflow.com/questions/35174399/nameerror-uninitialized-constant-carrierwavestoragefog&lt;/a&gt; ]&lt;br&gt;
[ &lt;a href="https://github.com/carrierwaveuploader/carrierwave/issues/2023" rel="nofollow" target="_blank"&gt;https://github.com/carrierwaveuploader/carrierwave/issues/2023&lt;/a&gt; ]   &lt;/p&gt;

&lt;p&gt;如下是我的相关文件&lt;br&gt;
&lt;strong&gt;&lt;em&gt;config/initializers/carrier_wave.rb&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&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;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;fog_credentials&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;#  Amazon S3 的配置&lt;/span&gt;
      &lt;span class="ss"&gt;:provider&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'AWS'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;:aws_access_key_id&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'S3_ACCESS_KEY'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="ss"&gt;:aws_secret_access_key&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'S3_SECRET_KEY'&lt;/span&gt;&lt;span class="p"&gt;],&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;fog_directory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'S3_BUCKET'&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;strong&gt;&lt;em&gt;app/uploaders/picture_uploader.rb&lt;/em&gt;&lt;/strong&gt;&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;PictureUploader&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;process&lt;/span&gt; &lt;span class="n"&gt;resize_to_limit&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;]&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;span class="n"&gt;storage&lt;/span&gt; &lt;span class="ss"&gt;:fog&lt;/span&gt;
  &lt;span class="k"&gt;elsif&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;development?&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;end&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;extension_white_list&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;h3 id="补充"&gt;补充&lt;/h3&gt;
&lt;p&gt;在 push 前我还执行了 如下命令：&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;heroku config:set &lt;span class="nv"&gt;S3_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;access key&amp;gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;heroku config:set &lt;span class="nv"&gt;S3_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;secret key&amp;gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;heroku config:set &lt;span class="nv"&gt;S3_BUCKET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;bucket name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;望各位大牛赐教，谢谢！&lt;/p&gt;</description>
      <author>aini</author>
      <pubDate>Fri, 21 Sep 2018 16:01:44 +0800</pubDate>
      <link>https://ruby-china.org/topics/37529</link>
      <guid>https://ruby-china.org/topics/37529</guid>
    </item>
    <item>
      <title>NoMethodError (undefined method `User' for #&lt;User:0x00000002586a68&gt;):</title>
      <description>&lt;h2 id="学习rails 5 遇到报错"&gt;学习 rails 5 遇到报错&lt;/h2&gt;&lt;h3 id="描述"&gt;描述&lt;/h3&gt;
&lt;p&gt;在我没有添加 validates 之前项目可以正常运行，添加了 validates 之后报错如下。报错之前我运行了命令↓&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails db:rollback
rails destroy scaffold Microposts
rails generate scaffold Micropost content:text user_id:integer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;运行这几条命令是因为第一次运行 scaffold 的时候 user_id: integer 中的冒号误打成了中文的了&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="报错信息"&gt;报错信息&lt;/h3&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;Started POST &lt;span class="s2"&gt;"/users"&lt;/span&gt; &lt;span class="k"&gt;for &lt;/span&gt;106.37.100.61 at 2018-08-20 07:19:33 +0000
Cannot render console from 106.37.100.61! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
   &lt;span class="o"&gt;(&lt;/span&gt;0.2ms&lt;span class="o"&gt;)&lt;/span&gt;  SELECT &lt;span class="s2"&gt;"schema_migrations"&lt;/span&gt;.&lt;span class="s2"&gt;"version"&lt;/span&gt; FROM &lt;span class="s2"&gt;"schema_migrations"&lt;/span&gt; ORDER BY &lt;span class="s2"&gt;"schema_migrations"&lt;/span&gt;.&lt;span class="s2"&gt;"version"&lt;/span&gt; ASC
Processing by UsersController#create as HTML
  Parameters: &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"utf8"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"✓"&lt;/span&gt;, &lt;span class="s2"&gt;"authenticity_token"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"UrrKnE8xR9phK4WEdyrgxgJSItgopSno2ZfyTHC1AIKG3WEs4iE17gDzp5xGzxXSrLG0cqOPP1cht7AvOSQMqQ=="&lt;/span&gt;, &lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="o"&gt;=&amp;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;""&lt;/span&gt;, &lt;span class="s2"&gt;"email"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;, &lt;span class="s2"&gt;"commit"&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"Create User"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
   &lt;span class="o"&gt;(&lt;/span&gt;0.1ms&lt;span class="o"&gt;)&lt;/span&gt;  begin transaction
   &lt;span class="o"&gt;(&lt;/span&gt;0.1ms&lt;span class="o"&gt;)&lt;/span&gt;  rollback transaction
Completed 500 Internal Server Error &lt;span class="k"&gt;in &lt;/span&gt;25ms &lt;span class="o"&gt;(&lt;/span&gt;ActiveRecord: 0.8ms&lt;span class="o"&gt;)&lt;/span&gt;



NoMethodError &lt;span class="o"&gt;(&lt;/span&gt;undefined method &lt;span class="sb"&gt;`&lt;/span&gt;User&lt;span class="s1"&gt;' for #&amp;lt;User:0x00000002586a68&amp;gt;):

app/controllers/users_controller.rb:31:in `block in create'&lt;/span&gt;
app/controllers/users_controller.rb:30:in &lt;span class="sb"&gt;`&lt;/span&gt;create&lt;span class="s1"&gt;'
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="model （user.rb）"&gt;model (user.rb)&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationRecord&lt;/span&gt;
  &lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:microposts&lt;/span&gt;
  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt; 
  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &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="controller (users_controller.rb)"&gt;controller (users_controller.rb)&lt;/h3&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UsersController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;
  &lt;span class="n"&gt;before_action&lt;/span&gt; &lt;span class="ss"&gt;:set_user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;only: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:edit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:destroy&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;before_action&lt;/span&gt; &lt;span class="ss"&gt;:set_user_micropost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;only: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:edit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:update&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:destroy&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

  &lt;span class="c1"&gt;# GET /users&lt;/span&gt;
  &lt;span class="c1"&gt;# GET /users.json&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;
    &lt;span class="vi"&gt;@users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="c1"&gt;# GET /users/1&lt;/span&gt;
  &lt;span class="c1"&gt;# GET /users/1.json&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;show&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="c1"&gt;# GET /users/new&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt;
    &lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="c1"&gt;# GET /users/1/edit&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;edit&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="c1"&gt;# POST /users&lt;/span&gt;
  &lt;span class="c1"&gt;# POST /users.json&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
    &lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@user.save&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="vi"&gt;@user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;notice: &lt;/span&gt;&lt;span class="s1"&gt;'User was successfully created.'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;status: :created&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;location: &lt;/span&gt;&lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:new&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="vi"&gt;@user.errors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;status: :unprocessable_entity&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="c1"&gt;# PATCH/PUT /users/1&lt;/span&gt;
  &lt;span class="c1"&gt;# PATCH/PUT /users/1.json&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;
    &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@user.update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="vi"&gt;@user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;notice: &lt;/span&gt;&lt;span class="s1"&gt;'User was successfully updated.'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;status: :ok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;location: &lt;/span&gt;&lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;:edit&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;json: &lt;/span&gt;&lt;span class="vi"&gt;@user.errors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;status: :unprocessable_entity&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="c1"&gt;# DELETE /users/1&lt;/span&gt;
  &lt;span class="c1"&gt;# DELETE /users/1.json&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;destroy&lt;/span&gt;
    &lt;span class="vi"&gt;@user.destroy&lt;/span&gt;
    &lt;span class="n"&gt;respond_to&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;users_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;notice: &lt;/span&gt;&lt;span class="s1"&gt;'User was successfully destroyed.'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="ss"&gt;:no_content&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="kp"&gt;private&lt;/span&gt;
    &lt;span class="c1"&gt;# Use callbacks to share common setup or constraints between actions.&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set_user&lt;/span&gt;
      &lt;span class="vi"&gt;@user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set_user_micropost&lt;/span&gt;
      &lt;span class="vi"&gt;@microposts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="vi"&gt;@user.microposts&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="c1"&gt;# Never trust parameters from the scary internet, only allow the white list through.&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;user_params&lt;/span&gt;
      &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permit&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="ss"&gt;:email&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="application_controller"&gt;application_controller&lt;/h3&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;protect_from_forgery&lt;/span&gt; &lt;span class="ss"&gt;with: :exception&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;
    &lt;span class="n"&gt;render&lt;/span&gt; &lt;span class="ss"&gt;html: &lt;/span&gt;&lt;span class="s2"&gt;"Hello World!"&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>aini</author>
      <pubDate>Mon, 20 Aug 2018 15:45:51 +0800</pubDate>
      <link>https://ruby-china.org/topics/37353</link>
      <guid>https://ruby-china.org/topics/37353</guid>
    </item>
    <item>
      <title>JS 判断移动端 APP 是否安装</title>
      <description>&lt;p&gt;怎么在移动端网站中用 JS 判断 APP 是否安装&lt;br&gt;
bing 搜了一下，答案基本都是利用 setTimeout 的形式判断 APP 是否安装，但是无论什么情况都会进 setTimeout 中。&lt;/p&gt;

&lt;p&gt;忘各位前辈不吝赐教！&lt;/p&gt;</description>
      <author>aini</author>
      <pubDate>Thu, 05 Jul 2018 16:31:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/37104</link>
      <guid>https://ruby-china.org/topics/37104</guid>
    </item>
    <item>
      <title>popstate 事件</title>
      <description>&lt;p&gt;HTML 中即便进入了那些非 pushState 和 replaceState 方法作用过的没有 state 对象关联的那些网页，popstate 事件也仍然会被触发。&lt;br&gt;
求教！现在我不想让其他页面触发 popstate 事件，应该怎么做？&lt;br&gt;
补充：在我用了 popstate 之后点击回退，有些时候会一直弹出提示框（我这里的逻辑是，点击回退弹出提示框）。 &lt;/p&gt;</description>
      <author>aini</author>
      <pubDate>Fri, 22 Jun 2018 14:54:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/37031</link>
      <guid>https://ruby-china.org/topics/37031</guid>
    </item>
    <item>
      <title>models 中 Schema Information 含义</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# == Schema Information &lt;/span&gt;
&lt;span class="c1"&gt;# &lt;/span&gt;
&lt;span class="c1"&gt;# Table name: users&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="c1"&gt;#  id              :integer          not null, primary key&lt;/span&gt;
&lt;span class="c1"&gt;#  name         :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  address            :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  tel         :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  gender       :string(255)&lt;/span&gt;
&lt;span class="c1"&gt;#  created_at      :datetime         not null&lt;/span&gt;
&lt;span class="c1"&gt;#  updated_at      :datetime         not null&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上请教各位前辈，这种跟 mongoDB 的区别是什么？有什么好处？都加 # 注释了他是怎么运行到的？&lt;/p&gt;</description>
      <author>aini</author>
      <pubDate>Fri, 15 Jun 2018 15:18:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/36952</link>
      <guid>https://ruby-china.org/topics/36952</guid>
    </item>
    <item>
      <title>复制文件</title>
      <description>&lt;p&gt;&lt;strong&gt;把阿里服务器上工程下的文件，通过命令复制到本地磁盘或者本地工程下相应位置。&lt;/strong&gt;&lt;br&gt;
 &lt;strong&gt;ps: 我把服务器上的数据库导出来了一份 .sql 文件，现在想把它复制到本地工程下并导入数据。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="解决过程"&gt;解决过程&lt;/h2&gt;
&lt;p&gt;问题已经解决，非常感谢各位的帮助。  &lt;/p&gt;
&lt;h4 id="遇到的问题"&gt;遇到的问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;IPaddress 填写出错&lt;/strong&gt;&lt;br&gt;
特别注意如果哪位犯了和我一样的问题，我一定要提醒你，切记要细心确认 IPaddress 正确性。我由于主观上认为自己写的 ip 是没有错的（印象中是 copy 过来的），即使报如下错误  &lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh: connect to host IPaddress port 22: Connection timed out
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还没有意识到要去确认一遍自己的 ip 是否填写正确，我深知犯了一个脑残的错误，导致搞了半天，绕了一大圈。  &lt;/p&gt;
&lt;h4 id="解决方法："&gt;解决方法：&lt;/h4&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;scp root@IPaddress:/root/bag/MoneyBag.sql /web/bag/MoneyBag.sql
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;注意：执行此命令是在本地 Linux 下&lt;/strong&gt;  &lt;/p&gt;
&lt;h4 id="说明"&gt;说明&lt;/h4&gt;
&lt;p&gt;root → username&lt;br&gt;
IPaddress → 服务器 ip 地址&lt;br&gt;
/root/bag/MoneyBag.sql →  服务器下你要复制的文件路径&lt;br&gt;
/web/bag/MoneyBag.sql → 本地路径  &lt;/p&gt;
&lt;h2 id="诚谢"&gt;诚谢&lt;/h2&gt;
&lt;p&gt;非常感谢 &lt;a href="/Rei" class="user-mention" title="@Rei"&gt;&lt;i&gt;@&lt;/i&gt;Rei&lt;/a&gt; &lt;a href="/Peter" class="user-mention" title="@Peter"&gt;&lt;i&gt;@&lt;/i&gt;Peter&lt;/a&gt; &lt;a href="/IChou" class="user-mention" title="@IChou"&gt;&lt;i&gt;@&lt;/i&gt;IChou&lt;/a&gt;  &lt;a href="/Fighting_3" class="user-mention" title="@Fighting_3"&gt;&lt;i&gt;@&lt;/i&gt;Fighting_3&lt;/a&gt; &lt;/p&gt;</description>
      <author>aini</author>
      <pubDate>Mon, 11 Jun 2018 19:04:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/36930</link>
      <guid>https://ruby-china.org/topics/36930</guid>
    </item>
  </channel>
</rss>
