最近用 Rails 开发网站的一些心得分享

307 天前
 uijk

最近决定撸一个类似 HackerNews 的网站,为啥要撸这样一个网站呢?原因是 Hacker News 这个网站,简单,简单,还是简单,这很符合我那一点点不靠谱的审美观,但 Hacker News 是英文的。所以,决定也搞一个中文的。以后,大家有没有好的网站,好的产品,就可以在上面发布,不需要到 Hacker News 或者 Product hunt 。完全中文,完全符合国人习惯,打破美帝垄断,自主创新。

网站最初构想,很简单,用户提交一个网站(或者产品),填上标题、链接、描述,再加上图片,就可以发布了。对,是可以添加图片和显示的,相比全文字版的 Hacker News ,遥遥领先。

所以网站功能也简单,基本上就是一个关于链接的 CRUD 操作,再加上一个用户注册功能。基本就这几个功能,至少在初期,不想搞得太复杂。当然了,也模仿了 Hacker News ,可以对链接评分,评论,还在网上抄了一个 Hacker News 的文章推荐算法。这几个功能都不算太难,所以也把它们放在初期就实现。

技术选型上,虽然现在 web 开发,nextjs nuxtjs 之类的很热门,奈何我只会 ruby ,所以就选了“相对”比较熟的栈:Rails (但也有不少坑)。

CURD 这些操作,Rails 太擅长了,基本都能帮我完成,没什么可说的。

但是,对于用户注册这个功能,现在想起来,感觉这个用户注册功能搞得有点复杂了。本来手工撸一个简单的用户注册,也不太难。但不知道哪根筋搞错了,直接就上了 devise , 然后坑就开始来了。这个 devise ,功能虽然强大,但可能也是过度的。我就被 devise 里的一个忘记密码功能给带进坑里了。

这个忘记密码功能,是通过邮件找回密码的。为了使用邮件找回密码,就得有邮件发送服务。为了找一邮件发送服务,找了国内的腾讯、网易、阿里,都不靠谱。网友推荐的 ZOHO ,也不适合。还有网友推荐 Yandex 的,现在北极熊和西方国家那关系,也不敢用。找了亚马逊的,用户友好度超差,到现在还搞不懂怎么用,虽然已经发了 2 封测试邮件。

后来,自己还搭建一 mailserver 的 docker ,当我的 QQ 邮箱收到自己的 mailserver 发来的邮件,着实让我高兴了一把。但我尝试往 gmail 发送邮件时,被拒收了。具体原因忘了,好像是要通过什么认证的邮件服务,发出的邮件 gmail 才接收。我的心马上又薄凉薄凉了。自己搭建邮件服务,没那么简单。

后来,又了解到 sendgrid 可以发送邮件,马上注册一个,日,又提示我的账户没有授权。差不多想放弃,后来,发现 brevo ,有免费额度,每天 300 封邮件,对我来说够用了。brevo 界面简单,友好。到这,忘记密码这个功能的最后一环,终于补上了。

但为了折腾这个发送邮件功能,花了差不多 1 周,而代码开发才两天:(

除了发送邮件是个大坑,我一直信赖的 Rails 本身也有坑,Rails 7 之后,引入了个 turbo 方法,文档少也就算了,结果在 iphone 手机上的浏览器(我的是 safari ),竟然不兼容。现在还没解决,如果看到这篇文章的网友,在手机上,打开 webtagr.com 网站时,遇到一些错误,是因为 Rails 的 tubro 方法,想把一个链接设置为 POST 方法,但在手机上,turbo 不起作用,这个 post 方法,就会回退为 get 方法,但在 rails 的 route 中,又没有设置对应的路由。所以报错。(如果有网友知道怎么解决,还请告知)。

做这个网站给我的一些教训是:

  1. 以后开发网站,能不用 Rails 就不用 Rails 了
  2. 以后开发网站,在初期,不搞邮件相关的功能
  3. 以后开发网站,找个专业的 UI 来设计界面。

不管怎么样,https://webtagr.com 还是上线了,众位网友大咖,有什么好的网站或产品,也可以到上面去分享。

1550 次点击
所在节点    分享创造
11 条回复
fgt1t5y
307 天前


上传的图片是不是没改文件名?
FightPig
307 天前
1 、rails 现在内置的功能完全可以自己写个用户系统,很简单,我多年不用 devise 了,定制麻烦,而且国内大多喜欢用手机号,邮件不符合大多需求。
2 、另外 turbo 不是 7 后引入的,文档 https://turbo.hotwired.dev/这里还不够?
3 、我看你用的 importmap ,这个 safari 好像支持不太行,可以查看 https://caniuse.com/import-maps
lordofmetis
306 天前
楼主推荐现在学 rails 吗?感觉现在的 nextjs+vercel 更方便的样子
uijk
306 天前
@FightPig 非常感谢指正
uijk
306 天前
@lordofmetis 下一个网站打算用 nextjs
uijk
306 天前
@fgt1t5y 新的版本改文件名了
kuber
305 天前
@uijk 既然每个网站都是标题,图片和描述,不如做成瀑布流的形式,感觉好看些,没有那么 geek 。当然只是我个人的喜好
sead
305 天前
mailjet
这个完美嵌入 rails ,免费版每天 200 个邮件推送
uijk
303 天前
@kuber 这个建议很好。最初的想法是以标题和描述为主,图片是为了显得不单调。
uijk
303 天前
@sead 已经用 brevo ,目前感觉这个还行。现在折腾邮件怕了。暂时不换了
kuber
303 天前
虽然这种需求是一定有的,但是好奇个人做这样一个网站会有人去用吗,毕竟注册然后提交是比较耗时强的操作,除非有很好的推广能力,要不用户会很少吧。

我有一个建议,能不能做成一个聚合网站,把几个网站上的推荐聚合起来,比如 V2EX, reddit 之类的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1008899

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX