Ruby 两天入门 Rails 经历记录

fleam · 2022年02月28日 · 最后由 fleam 回复于 2022年03月04日 · 1269 次阅读

首先我是 windows 系统,ruby china 不建议用此方式安装 ruby,所以就安装了子系统

子系统用的 ubuntu,映像中,有此类相关教程,ubuntu 居多

ubuntu 版本选用的 18,因为有人说老的版本稳定

直接应用市场安装 ubuntu,第一步有问题,需要 wsl2,cmd 里给出了链接,打开按照教程安装

一直都很简单

然后在 linux 里安装 ruby,ruby 是个编程语言,rails 是个 web 框架,先装语言

试了很多次,都不行,卡住了

然后搜到了 rbenv-CN,这东西 gitee 上有,快就对了,别的不管

然后忘了在哪里,看到有个博客说一个外国人学习 ruby,一个月写了很多项目,看起来挺酷

学习?不可能!我想直接克隆下来跑起来

可惜失败了

他的仓库太老了,giehub 上很多 rails 的项目也很老,令人吃惊的是,维护时间都很长啊,什么原因?

rbenv-CN 这个东西不支持老的 ruby 版本,又纠结了半天

我想,我学习一下因该也不会很难,开干吧

搞到最新的 ruby,最新的 rails,直接开整

rails 官网上有一个简单的指南,足够我 curd 了

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

就搞这个吧,用 golang 和 rails 哪个搞我也挺纠结,最后决定用 rails,装都装好了,我得练练手

思路就是添加一个路由指向控制器得方法,方法递归读取视频文件列表展示出来

这我坑定要百度了,我这个菜鸡

但是,ruby 的这段代码让我震惊了,我在其他语言从未遇到过!

Dir.glob("/mnt/e/BaiduNetdiskDownload/GP 全部/*/.mp4")

吓死我了!这也太短了。。。

/mnt/e说的是我子系统访问宿主机的e盘下的文件

我猜它的返回值是个数组,简单看了下 rails 的指南

后端一句话:@videos = Dir.glob("/mnt/e/BaiduNetdiskDownload/GP 全部/*/.mp4")

前端一个遍历:

<% @videos.each do |video| %>
      <a class="list-group-item" href=<%= video[27,video.length] %>><%= video[27,video.length] %></a>
<% end %>

我敢说,这个简单程度 php 是比不上的

href 具体是什么才能让我看到视频?

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

灵机一闪,搞了软链不就得了?还得是我啊。。。子系统竟然也支持软链接从宿主机到子系统,这太酷了。。。

ln -s /mnt/e/BaiduNetdiskDownload/GP全部 /home/fleam/islet/public 

现在是用 localhost 能看到视频列表和视频了,但是同一 wifi 下,我手机用局域网 ip 看不了,我把防火墙关了,没用,做出入站规则,没用,最后做端口转发搞定了,这啥原理。。。

netsh interface portproxy add v4tov4 listenport=3000 listenaddress=* connectport=3000 connectaddress=127.0.0.1 protocol=tcp

整个需求,核心代码前后大概就三四行,感觉像没写一样,就很爽,继续搞

简单学习了一下爬虫,做了个简单得书签,直接 sqlite 就得了,简单 curd 学一学

最后,用到 ajax,怎么返回 json 是个问题,最后竟然又有新发现

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

获取 restful 的 get 传参如此简单,不用 httpRequest 什么的

返回 json 如此简单,不用序列化什么(怎么搜到的教程都是序列化或者搞个 view 呢?)

总之是搞定了

rails 是如此简单,我本地写小项目也不需要权限管理,也不用 react 套壳做桌面,就三个指标:简单、快、实用

ps:中间有的代码还是在一只手抱着孩子,一直手敲代码的情况下完成了,没用 vim,vscode 直接提示我能连 wsl,那就连呗。快捷键换成了 idea 的,还是爽歪歪。我的仓库地址:https://github.com/fleam/islet

新人入坑,没在 ruby china 看到有博客或者写日志功能,记录于此

fleam 200-02-28

ruby 部署要比 php 麻烦不少。。😄

pynix 回复

还没学到这一块,感觉本地写个小工具挺顺手的。。。

pynix 回复

是很多,很多。我认为什么是简单,放上去,启动即可。🐶

pynix 回复

php 也挺麻烦

两天进展很快了。实际用过 Rails 才知道什么叫生产力。

PS:写日志推荐一个网站 https://geeknote.net/

flyweights 回复

那是因为你已经熟悉了。

php 很多所谓虚拟空间,只需要把代码上传就行。 ruby 不熟悉之前部署门槛是很高的。论坛大量新手都在问 passenger 相关错误。 heroku 之类在国内又没办法用。 自己搭建 dokku 也需要一定熟练度。 国内很多 paas 对 ruby 支持都不是很友好。 自己开服务器部署很多都死在 passenger 上。

pynix 回复

或许这也是 rails 的门槛之一吧。

还有人学,真不容易,泪目

工作用 java,有时也学下 rails

https://geeknote.net/fleam/posts/396 erlang Elixir phoenix 安装记录

需要 登录 后方可回复, 如果你还没有账号请 注册新账号