网站最初构想,很简单,用户提交一个网站(或者产品),填上标题、链接、描述,再加上图片,就可以发布了。对,是可以添加图片和显示的,相比全文字版的 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 中,又没有设置对应的路由。所以报错。(如果有网友知道怎么解决,还请告知)。
做这个网站给我的一些教训是:
[ol]
[/ol]
不管怎么样,https://webtagr.com 还是上线了,众位网友大咖,有什么好的网站或产品,也可以到上面去分享。