<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>18810625123 (老刘同学)</title>
    <link>https://ruby-china.org/18810625123</link>
    <description>让我们一起前行，让技术改变生活，影响更多的人。</description>
    <language>en-us</language>
    <item>
      <title>nginx 相关问题，如何让一个域名下运行多个网站 (rails + nginx)</title>
      <description>&lt;h3 id="目前情况如下："&gt;目前情况如下：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一台阿里云服务器 (ubuntu14.04) &lt;/li&gt;
&lt;li&gt;一个已备案的一级域名 zyythsx.com(已做好域名解析如下)
&lt;img src="https://l.ruby-china.com/photo/2017/2b817641-1be7-4c23-bda5-9ef83dcfdc9f.png!large" title="" alt=""&gt;
&lt;/li&gt;
&lt;li&gt;可运行的 rails 项目 3 个，在服务器上的路径如下&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/root/ruby/a
/root/ruby/b
/root/ruby/c
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;已装 nginx(1.10.0 ubuntu)，&lt;code&gt;/etc/nginx/nginx.conf&lt;/code&gt;配置如下&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        gzip_disable "msie6";

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        server {
            listen 3001;
            server_name a.zyythsx.com;
        }

        server {
            listen 3002;
            server_name b.zyythsx.com;
        }

        server {
            listen 3003;
            server_name c.zyythsx.com;
        }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="现在的问题是，我要想每个二级域名访问一个项目，比如:"&gt;现在的问题是，我要想每个二级域名访问一个项目，比如：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;a.zyythsx.com 进入 a 项目&lt;/li&gt;
&lt;li&gt;b.zyythsx.com 进入 b 项目&lt;/li&gt;
&lt;li&gt;c.zyythsx.com 进入 c 项目&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;请问接下来要如何做？
nginx 要怎么配置？配置好 nginx 后，要怎么启动这些 rails 项目&lt;/p&gt;</description>
      <author>18810625123</author>
      <pubDate>Wed, 28 Jun 2017 14:32:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/33344</link>
      <guid>https://ruby-china.org/topics/33344</guid>
    </item>
    <item>
      <title>推荐一个好用的 文件与目录 读写 gem</title>
      <description>&lt;h2 id="介绍："&gt;介绍：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;这个 gem 对 ruby 的 File 和 Dir 类进行了封装，可以更方便的读取文件与目录与搜索文件&lt;/li&gt;
&lt;li&gt;我做这个主要是懒得去记 ruby 原生的文件与目录操作 api，我把这些常用的功能都封装成更实用好记的方法在这个 Ld::File 类里了。这样以后需要操作文件和目录时，我可以更加快速与方便的编写代码完成功能。&lt;/li&gt;
&lt;li&gt;功能最好的地方，我觉得是搜索，这个搜索不是只搜索目录下一级中的东西，而是搜索目录下所有的（也就是如果目录下还有目录，目录下又有目录，无论目录有多深都会被搜索出来）。另外我没有去区分目录与文件，统统都用 Ld::File 这个类，这样操作更加方便，实例中有一个 type 字段来区分这是文件还是目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装："&gt;安装：&lt;/h2&gt;
&lt;p&gt;1、添加 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="s1"&gt;'ld'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、运行 bundle install&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bundle &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="用法"&gt;用法&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;读文件与读文件夹都用 Ld::File 类，使用 open 打开一个路径，这个路径可以是绝对路径或相对路径。type 字段，0 为目录，1 为文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="s1"&gt;'config/application.rb'&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;name&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt;application.rb&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;path&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; /.../rails_root/config/application.rb&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;type&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;目录操作，比如用相对路径，打开这个 Rails 项目的 app 目录，children 返回所有的子目录以及文件，father 返回父目录（即这个 Rails 项目的根目录），brothers 返回 app 所有兄弟（同级的所有目录与文件的数组）。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="s1"&gt;'app'&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;children&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt; 返回app目录下的所有文件夹与文件的数组&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;father&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt;  返回app的上级父目录（即Rails项目根目录）&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;brothers&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt; 返回app所有兄弟（同级的所有目录与文件的数组）&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;直接调用下级目录的同名方法返回下级目录。比如 app 目录下的 models 目录，可以&lt;code&gt;Ld::File.open('app').models&lt;/code&gt;这样返回 models 这个目录&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="s1"&gt;'app'&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;models&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt; 返回models目录&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;views&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt; 返回views目录&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;搜索文件方法&lt;code&gt;search_files()&lt;/code&gt;，参数是正则表达式。返回这个目录以及所有子目录下所有匹配正则表达式的文件&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="s1"&gt;'app'&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search_files&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/.rb$/&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#=&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;搜索目录方法&lt;code&gt;search_dirs()&lt;/code&gt;，和搜索文件一样，会返回目录下及所有子目录下所有匹正则表达式的目录

&lt;ul&gt;
&lt;li&gt;123
&lt;code&gt;ruby
dir = Ld::File.open 'app/views'
dir.search_dirs(//) #=&amp;gt;
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rubygems.org链接"&gt;rubygems.org 链接&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://rubygems.org/gems/ld" rel="nofollow" target="_blank"&gt;https://rubygems.org/gems/ld&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="github项目源码 与文档"&gt;github 项目源码 与文档&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/18810625123/ld" rel="nofollow" target="_blank"&gt;https://github.com/18810625123/ld&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="联系方式，技术支持"&gt;联系方式，技术支持&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;QQ 370182106&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;微信 18810625123&lt;/li&gt;
&lt;li&gt;star 我的 github 项目可在更新 gem 时会收到通知。觉得好用的朋友们别忘了分享给小伙伴们哦 &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
      <author>18810625123</author>
      <pubDate>Sat, 10 Jun 2017 04:13:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/33200</link>
      <guid>https://ruby-china.org/topics/33200</guid>
    </item>
    <item>
      <title>给大家推荐一个好用的 项目代码分析、模型视图化 gem </title>
      <description>&lt;h2 id="介绍："&gt;介绍：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;可以分析一个 Rails 项目的代码&lt;/li&gt;
&lt;li&gt;每个 model 实例，会有一个&lt;code&gt;print&lt;/code&gt;方法可以调用，这样可以查看这个模型拥有哪些关联关系、路由、字段、对应的控制器、对应的视图 等信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装："&gt;安装：&lt;/h2&gt;
&lt;p&gt;1、添加 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="s1"&gt;'ld'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、运行 bundle install&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bundle &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="配置"&gt;配置&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;在 config/application.rb 的最后添加如下代码，这样可以让每个 model 实例都具有查看自己信息的能力，使用方法&lt;code&gt;任意模型实例.print :接参数&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;"ld"&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ActiveRecord::Base&lt;/span&gt;
  &lt;span class="c1"&gt;# 为所有模型添加一个实例方法 print&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;:relations&lt;/span&gt;
    &lt;span class="vc"&gt;@@project&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
    &lt;span class="vc"&gt;@@project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="nb"&gt;self&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="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;
    &lt;span class="nb"&gt;self&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;h2 id="用法："&gt;用法：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;使用&lt;code&gt;Ld::Project.new&lt;/code&gt;可以分析当前 Rails 项目&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;project&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Project&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="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;root&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="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:relations&lt;/span&gt;
&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:fields&lt;/span&gt;
&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:views&lt;/span&gt;
&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:controllers&lt;/span&gt;
&lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:routes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;如果在 ActiveRecord::Base 中添加了实例方法 print，将可以这样更方便的使用&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 效果同上&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:relations&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:fields&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:views&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:controllers&lt;/span&gt;
&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt; &lt;span class="ss"&gt;:routes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;效果展示&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/6ffcca50-74e9-41ad-b65a-6aeebb11aa4f.png!large" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2017/0fd086c3-e34b-463b-8020-a3c4bf2cd237.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="rubygems.org链接"&gt;rubygems.org 链接&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://rubygems.org/gems/ld" rel="nofollow" target="_blank"&gt;https://rubygems.org/gems/ld&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="github项目源码 与文档"&gt;github 项目源码 与文档&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/18810625123/ld" rel="nofollow" target="_blank"&gt;https://github.com/18810625123/ld&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="联系方式，技术支持"&gt;联系方式，技术支持&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;QQ 370182106&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;微信 18810625123&lt;/li&gt;
&lt;li&gt;star 我的 github 项目可在更新 gem 时会收到通知。觉得好用的朋友们别忘了分享给小伙伴们哦 &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
      <author>18810625123</author>
      <pubDate>Thu, 08 Jun 2017 00:17:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/33172</link>
      <guid>https://ruby-china.org/topics/33172</guid>
    </item>
    <item>
      <title>给大家推荐一个好用的 excel 读写的 gem</title>
      <description>&lt;h2 id="介绍："&gt;介绍：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;主要使用 Ld::Excel 类&lt;/li&gt;
&lt;li&gt;可以读取一个 excel 文件，先&lt;code&gt;Ld::Excel.open(文件路径)&lt;/code&gt;，再&lt;code&gt;read({sheet:'sheetname',scope:'a1:b2'})&lt;/code&gt;即可读取出 sheetname 中 a1~b2 这个范围中的数据，返回的是二维数组&lt;/li&gt;
&lt;li&gt;可以创建一个新的 excel 文件，使用&lt;code&gt;Ld::Excel.create(file_path:'/dir/excelfile.xls'){|excel| excel.write_sheet}&lt;/code&gt;。写 excel 需要传一个&amp;amp;block，这个 block 中的代码是告诉 gem 写什么 sheet 以及内容&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装："&gt;安装：&lt;/h2&gt;
&lt;p&gt;1、在 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="s1"&gt;'ld'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、运行 bundle install&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bundle &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="用法："&gt;用法：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;写 excel 文件，如下代码可以写一个新的 excel。只需要告诉 Ld::Excel 要把文件写到哪 (file_path)，然后在里面可以创建任意多个 sheet 页 (使用&lt;code&gt;excel.write_sheet&lt;/code&gt;方法)。写 sheet 只需要设置内容&lt;code&gt;sheet.set_rows()&lt;/code&gt;传入二维数组，即可。执行完后会将 xls 文件写到指定的地方。当然还可以使用&lt;code&gt;set_format&lt;/code&gt;设置字体，通过&lt;code&gt;set_point&lt;/code&gt;设置内容从哪个位置开始写，通过&lt;code&gt;set_headings&lt;/code&gt;设置标题（这个数组会写到内容的第一行)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt; &lt;span class="ss"&gt;:file_path&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'config/excel_test.xls'&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;excel&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write_sheet&lt;/span&gt; &lt;span class="s1"&gt;'abc'&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;sheet&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="c1"&gt;# 这是设置 sheet的名称的&lt;/span&gt;
    &lt;span class="n"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_format&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="ss"&gt;color: :red&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;font_size: &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;font: &lt;/span&gt;&lt;span class="s1"&gt;'微软雅黑'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="c1"&gt;# 这一行可以不用，不设置就是excel默认的颜色 字体与字体大小&lt;/span&gt;
    &lt;span class="n"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_point&lt;/span&gt; &lt;span class="s1"&gt;'a1'&lt;/span&gt;  &lt;span class="c1"&gt;# 这个也可以不用， 默认就是 'a1'&lt;/span&gt;
    &lt;span class="n"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_headings&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'A'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'B'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'C'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'D'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;# 这个标题也可以不用，&lt;/span&gt;
    &lt;span class="n"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_rows&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;  &lt;span class="c1"&gt;# set_rows 必须传入一个二维数组，写法是从左至右，从上至下，&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'5'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'5'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'6'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'5'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'6'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'7'&lt;/span&gt;&lt;span class="p"&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;ul&gt;
&lt;li&gt;创建成功的 excel 如下，sheet 名是'abc'，内容从 a1 单元格开始，标题为 ['A','B','C','D']&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/23e6788b-f786-421d-ba9d-cec83b6363bb.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;读 excel 文件，返回二维数组&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;excel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Ld&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'config/excel_test.xls'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt; &lt;span class="ss"&gt;sheet: &lt;/span&gt;&lt;span class="s1"&gt;'abc'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="ss"&gt;:'A1:B5'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;如果需要连坐标一起返回，可以这样：（指定 &lt;code&gt;location: true&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt; &lt;span class="ss"&gt;sheet: &lt;/span&gt;&lt;span class="s1"&gt;'abc'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="ss"&gt;:'A1:B5'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;location: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;如果要多读一列，可以这样&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt; &lt;span class="ss"&gt;sheet: &lt;/span&gt;&lt;span class="s1"&gt;'abc'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="ss"&gt;:'A1:B5'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;add: &lt;/span&gt;&lt;span class="s1"&gt;'C'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;如果要多读一行，可以这样&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;excel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt; &lt;span class="ss"&gt;sheet: &lt;/span&gt;&lt;span class="s1"&gt;'abc'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="ss"&gt;:'A1:B5'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;add: &lt;/span&gt;&lt;span class="s1"&gt;'6'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;这是在 rails console 中读取一个文件的效果，返回的是一个二维数组&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/565dd3a0-cab8-43d4-b684-01047a949227.png!large" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="rubygems.org链接"&gt;rubygems.org 链接&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://rubygems.org/gems/ld" rel="nofollow" target="_blank"&gt;https://rubygems.org/gems/ld&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="github项目源码 与文档"&gt;github 项目源码 与文档&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/18810625123/ld" rel="nofollow" target="_blank"&gt;https://github.com/18810625123/ld&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="联系方式，技术支持"&gt;联系方式，技术支持&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;QQ 370182106&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;微信 18810625123&lt;/li&gt;
&lt;li&gt;star 我的 github 项目可在更新 gem 时会收到通知。觉得好用的朋友们别忘了分享给小伙伴们哦 &lt;img title=":smile:" alt="😄" src="https://twemoji.ruby-china.com/2/svg/1f604.svg" class="twemoji"&gt; &lt;/li&gt;
&lt;/ul&gt;</description>
      <author>18810625123</author>
      <pubDate>Mon, 05 Jun 2017 20:31:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/33156</link>
      <guid>https://ruby-china.org/topics/33156</guid>
    </item>
  </channel>
</rss>
