<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>fleam (fleam)</title>
    <link>https://ruby-china.org/fleam</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>两天入门 Rails 经历记录</title>
      <description>&lt;p&gt;首先我是 windows 系统，ruby china 不建议用此方式安装 ruby，所以就安装了子系统&lt;/p&gt;

&lt;p&gt;子系统用的 ubuntu，映像中，有此类相关教程，ubuntu 居多&lt;/p&gt;

&lt;p&gt;ubuntu 版本选用的 18，因为有人说老的版本稳定&lt;/p&gt;

&lt;p&gt;直接应用市场安装 ubuntu，第一步有问题，需要 wsl2，cmd 里给出了链接，打开按照教程安装&lt;/p&gt;

&lt;p&gt;一直都很简单&lt;/p&gt;

&lt;p&gt;然后在 linux 里安装 ruby，ruby 是个编程语言，rails 是个 web 框架，先装语言&lt;/p&gt;

&lt;p&gt;试了很多次，都不行，卡住了&lt;/p&gt;

&lt;p&gt;然后搜到了 rbenv-CN，这东西 gitee 上有，快就对了，别的不管&lt;/p&gt;

&lt;p&gt;然后忘了在哪里，看到有个博客说一个外国人学习 ruby，一个月写了很多项目，看起来挺酷&lt;/p&gt;

&lt;p&gt;学习？不可能！我想直接克隆下来跑起来&lt;/p&gt;

&lt;p&gt;可惜失败了&lt;/p&gt;

&lt;p&gt;他的仓库太老了，giehub 上很多 rails 的项目也很老，令人吃惊的是，维护时间都很长啊，什么原因？&lt;/p&gt;

&lt;p&gt;rbenv-CN 这个东西不支持老的 ruby 版本，又纠结了半天&lt;/p&gt;

&lt;p&gt;我想，我学习一下因该也不会很难，开干吧&lt;/p&gt;

&lt;p&gt;搞到最新的 ruby，最新的 rails，直接开整&lt;/p&gt;

&lt;p&gt;rails 官网上有一个简单的指南，足够我 curd 了&lt;/p&gt;

&lt;p&gt;这个时候我突然想到一个需求，就是我有一个同事，经常要用笔记本上看电影，询问原因得知，手机上没有，体积太大，又懒得传&lt;/p&gt;

&lt;p&gt;就搞这个吧，用 golang 和 rails 哪个搞我也挺纠结，最后决定用 rails，装都装好了，我得练练手&lt;/p&gt;

&lt;p&gt;思路就是添加一个路由指向控制器得方法，方法递归读取视频文件列表展示出来&lt;/p&gt;

&lt;p&gt;这我坑定要百度了，我这个菜鸡&lt;/p&gt;

&lt;p&gt;但是，ruby 的这段代码让我震惊了，我在其他语言从未遇到过！&lt;/p&gt;

&lt;p&gt;Dir.glob("/mnt/e/BaiduNetdiskDownload/GP 全部/*&lt;em&gt;/&lt;/em&gt;.mp4")&lt;/p&gt;

&lt;p&gt;吓死我了！这也太短了。。。&lt;/p&gt;

&lt;p&gt;/mnt/e说的是我子系统访问宿主机的e盘下的文件&lt;/p&gt;

&lt;p&gt;我猜它的返回值是个数组，简单看了下 rails 的指南&lt;/p&gt;

&lt;p&gt;后端一句话：&lt;a href="/videos" class="user-mention" title="@videos"&gt;&lt;i&gt;@&lt;/i&gt;videos&lt;/a&gt; = Dir.glob("/mnt/e/BaiduNetdiskDownload/GP 全部/*&lt;em&gt;/&lt;/em&gt;.mp4")&lt;/p&gt;

&lt;p&gt;前端一个遍历：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;% @videos.each do |video| %&amp;gt;
      &amp;lt;a class="list-group-item" href=&amp;lt;%= video[27,video.length] %&amp;gt;&amp;gt;&amp;lt;%= video[27,video.length] %&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我敢说，这个简单程度 php 是比不上的&lt;/p&gt;

&lt;p&gt;href 具体是什么才能让我看到视频？&lt;/p&gt;

&lt;p&gt;我回忆了一下，平时都是放在静态资源文件夹了，好像很多 web 框架也不例外，rails 我看了下，也有。可是我几百 G 的文件，我宿主机拷贝到子系统里？感觉有点傻？&lt;/p&gt;

&lt;p&gt;灵机一闪，搞了软链不就得了？还得是我啊。。。子系统竟然也支持软链接从宿主机到子系统，这太酷了。。。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ln -s /mnt/e/BaiduNetdiskDownload/GP全部 /home/fleam/islet/public 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在是用 localhost 能看到视频列表和视频了，但是同一 wifi 下，我手机用局域网 ip 看不了，我把防火墙关了，没用，做出入站规则，没用，最后做端口转发搞定了，这啥原理。。。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;netsh interface portproxy add v4tov4 listenport=3000 listenaddress=* connectport=3000 connectaddress=127.0.0.1 protocol=tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;整个需求，核心代码前后大概就三四行，感觉像没写一样，就很爽，继续搞&lt;/p&gt;

&lt;p&gt;简单学习了一下爬虫，做了个简单得书签，直接 sqlite 就得了，简单 curd 学一学&lt;/p&gt;

&lt;p&gt;最后，用到 ajax，怎么返回 json 是个问题，最后竟然又有新发现&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def search
    title = params["data"]
    # @collect = Collect.lik("title",title).order("created_at desc")
    @collect = Collect.where('title like :str', str: "%#{title}%").order("created_at desc")
    Rails.logger.warn "================"
    Rails.logger.warn @collect
    Rails.logger.warn "================"
    render json: @collect
  end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;获取 restful 的 get 传参如此简单，不用 httpRequest 什么的&lt;/p&gt;

&lt;p&gt;返回 json 如此简单，不用序列化什么（怎么搜到的教程都是序列化或者搞个 view 呢？）&lt;/p&gt;

&lt;p&gt;总之是搞定了&lt;/p&gt;

&lt;p&gt;rails 是如此简单，我本地写小项目也不需要权限管理，也不用 react 套壳做桌面，就三个指标：简单、快、实用&lt;/p&gt;

&lt;p&gt;ps：中间有的代码还是在一只手抱着孩子，一直手敲代码的情况下完成了，没用 vim，vscode 直接提示我能连 wsl，那就连呗。快捷键换成了 idea 的，还是爽歪歪。我的仓库地址：&lt;a href="https://github.com/fleam/islet" rel="nofollow" target="_blank"&gt;https://github.com/fleam/islet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;新人入坑，没在 ruby china 看到有博客或者写日志功能，记录于此&lt;/p&gt;

&lt;p&gt;fleam 200-02-28&lt;/p&gt;</description>
      <author>fleam</author>
      <pubDate>Mon, 28 Feb 2022 09:49:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/42169</link>
      <guid>https://ruby-china.org/topics/42169</guid>
    </item>
  </channel>
</rss>
