V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
uijk
V2EX  ›  分享创造

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

  •  
  •   uijk · 346 天前 · 1605 次点击
    这是一个创建于 346 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近决定撸一个类似 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 还是上线了,众位网友大咖,有什么好的网站或产品,也可以到上面去分享。

    11 条回复    2024-01-19 12:09:27 +08:00
    fgt1t5y
        1
    fgt1t5y  
       346 天前


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

    我有一个建议,能不能做成一个聚合网站,把几个网站上的推荐聚合起来,比如 V2EX, reddit 之类的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4207 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:32 · PVG 13:32 · LAX 21:32 · JFK 00:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.