• 似乎 Rails 6 的 ClassLoader 抽成接口所以可以替换了。

    是的, 好像有一个配置, 可以选择使用老的 Module#const_missing 实现和新的 zeitwerk 采用的 Module#autoload 实现.

    扯个题外的,我之前和 @dsh0416 讨论利用这个和 Bootsnap 的原理做 Ruby 代码的预编译,甚至加上简单的AES加密,用来保护外包之类项目的源码

    👍

  • 自己的简单介绍换成了英文.

  • 请教一个 Emacs 的问题. at 2018年11月11日

    抱歉六年半后, 挖了我自己坟贴 ......, 前几天在网上找到了一段 10 年前的 blog 文章, 发现了解决类似问题的 lisp 代码, 然后今天改了改, 现在工作的蛮好, 有用到的请自取吧.

  • Awesome Ruby China at 2018年07月27日

    @msg7086 , 我承认你说的大部分都是对的, 反倒是我第一时间看到你的观点时, 对你的有些话有些误解, 这里我道歉.

    其实我也用很多 GUI 工具, dbeaver 用来连接数据库, beyond compare 用来目录同步, 文件比较, 只是更倾向于不依赖于这些工具而已, 可能是目前我的操作方式够用, 没有更多的需求的缘故, 如果到那个地步, 又有足够易用的, 让我心动的工具可用, 我也会选择他.

  • Awesome Ruby China at 2018年07月27日

    对了,你提到你用了update_base dev,请问这玩意儿支持3-way merge吗?能做成左+中+右diff界面吗?能高亮显示段落差异和行内差异吗?

    以前用 Beyond Compare 执行 3-way 合并, 现在也会在提交代码前, 用这个工具 code review 一遍.

    但是后来发现, 其实不好用 (可能 bc4 这方面比较弱吧, 常出错), 最快的方式反倒是直接用编辑器逐个文件编辑来的最快.(这也是 Ruby China 社区一个大牛曾经提醒我的, 直接搜索 <<<<<<, 自己编辑解决冲突, 效果不错)

  • Awesome Ruby China at 2018年07月22日

    本来只是来顶楼主小哥的, 没忍住, 歪楼了. 😄

  • Awesome Ruby China at 2018年07月22日

    我不完全是这个意思,但是我觉得该说的我已经说了,能理解的人也应该已经理解了,不能理解的人不管说什么大概也不会理解,所以我不想再翻来覆去重复那些话了。如果大家想继续讨论的话当然没问题。如果有人还想杠的话我就直接Block得了。时间宝贵,不想浪费在无谓的争吵上。

    我的观点是任何一个对Git有比较复杂需求的人都应该用GUI辅助而不是裸撸CLI,从来不会犯错而且手速飞快or闲得没事干的人除外。

    困了,睡了。

    好吧, 本来不想再说了, 因为很多原因, 我虽然加入 Ruby China 好几年了, 也不常来, 但是实在是不能忍了, 从一开始, 你定调的口气

    Git你需要一个牛逼的GUI。光用命令行,几乎干不了什么复杂的事情。

    我觉得就已经把整个 Ruby China 社区受众的理解能力的 level 降低了不止一个档次, 这种话如果你实在一个 巨硬 产品主导的社区发出来, 可能会大受赞赏, 但是却偏偏在一个命令行操作挺多, 而且 Ruby 语言本身其实和 CLI 很有渊源的一个语言之上谈这个, 就有点小瞧社区的大众了.

    我说的是 用命令行,几乎干不了什么复杂的事情,主语是人,说的是人类的能力无法达到充分利用命令行赋予的功能。

    我只能说越解释越黑, 很明显你也拉低了 linus 的智商, 你写这么复杂的 git 功能干嘛? 是让人用的吗?

    但是我觉得该说的我已经说了,能理解的人也应该已经理解了,不能理解的人不管说什么大概也不会理解,所以我不想再翻来覆去重复那些话了。

    我真的觉得, 只有你自己在认为, 和你争论的这些人不理解. 😅

    如果大家想继续讨论的话当然没问题。如果有人还想杠的话我就直接Block得了。时间宝贵,不想浪费在无谓的争吵上。

    好吧, 也许你时间宝贵, 但是你不这样自我的将自己的那一套GUI工具当作使用 git 的救世主来这里传教, 没人愿意花费时间和你争论.

  • Awesome Ruby China at 2018年07月22日

    请问你最后的图每次合并分支都是通过 rebase 吗?能分享下你们是按照怎么样的流程走的呢?

    这位小哥, 我猜的没错的话, @msg7086 在合并代码前, 会要求 feature 代码的开发者, 做 rebase 然后重新强推一下.

    假设, 你要合并 feature/new_feature 到 dev 分支, 你需要首先 checkout feature/new_feature 分支, 然后运行 update_base dev(参见之前回帖写的那个函数), 解决冲突(如果有), 然后强推 git push --force origin feature/new_feature

  • Awesome Ruby China at 2018年07月22日

    emacs 的 magit 算 git 的 GUI 吗?

    这玩意儿超级强大的, 因为太强大, 所以我一直没敢用, 还在用一个很老的包(git-emacs) + 自己的 hack,

  • Awesome Ruby China at 2018年07月22日

    我说的是 用命令行,几乎干不了什么复杂的事情,主语是人,说的是人类的能力无法达到充分利用命令行赋予的功能。

    感觉这个还是反的, 最复杂的事情, 都一定要通过命令行来自动化, 如果 git 的标准命令你觉得有点麻烦, 你可以写个 bash wrap 起来, 我自己写了大把的类似的脚本, 只是为了让我操作 git 时提供便利, 这就是为什么有了 git, 还有 git-flow, 有个 docker, 还有 docker-compose.

    客观而不带任何偏见的讲, 如果你的话是对的, Linux/BSD/Unix 真的没有存在的必要了, 每个人工作方式不一样, 你喜欢 IDE, 习惯工具, 却认为别人用命令行干不了复杂的事情, 有点以偏概全了.

    为了增加信服力(不是我信口雌黄), 贴一下 git 相关的脚本目录: (虽然不是每个脚本都常用, 其实就是心血来潮, 写个脚本, 当作笔记而已)

     abort*               cob@       fork*    gitb*                      gitdiff@                    gitll@                         gitv*           push*           skip*
     add*                 cofile*    fork1*   git-bcompare*              gitdiffc@                   gitls*                         gitzip@        'push!'@         stash*
     add_key_to_github*   com@       gc*      gitc*                      git-diff-wrapper*           gitls1@                        merge*          rebase*        'stash!'@
     anno*               'com!'@    'gc!'@    gitcat*                    git_find_big_files*         gitm*                          merged*         rebase_log*     stashp@
     clean*               commit*    gca@     git_clean_merged_branch*   git_find_blob_commit*       gitrm*                         merge_dev*      reflog*         submodule*
    'clean!'@             cont*     'gca!'@   gitcp*                     git_find_dangling_object*   gits*                          merge_ours*     remote*         swap*
    'clean!!'@            cor@       gcp*     gitd*                      git_find_delete_file*       gitsize*                       merge_theirs*   reset*          track*
     clean1@              cov@       gd@      gitd1@                     gitfsck*                    git_squash_branch_to_commit*   mergetool*     'reset!'*        unreset*
     co*                  drop*      gd1@     gitdc@                     github_create_repo          gitss*                         pop*            show*           up*
    'co!'@                fetch*     gdc@     gitdd@                     gitinit*                    gitsub*                        pull*           shown*          upa@
     coa@                'fetch!'@   gg*      git_delete_big_files*      gitl*                       gittar*                        pullups*        show_restore*
    

    再贴的你应该懂的最常见的命令:

    function update_base () {
        branch=${1-develop}
        git checkout "$branch" &&
            git pull origin "$branch" --rebase &&
            git checkout - &&
            git rebase "$branch"
    }
    
    
  • 正确的做事方式:
    • 永远不要再次打断自己.
    • `卡马克式' 的专注.
    • 重要的事情, 立即写下来

不确定的事情不纠结, 不确定的想法不纠结, 不确定的感觉不纠结. 真正的接纳, 意味着要放下过去的不完美.