Pam*_*orp 17 macos ruby-on-rails mergetool app-update ruby-on-rails-5
我正在将 rails 5.2.4.1 应用程序升级到 rails 6。我想合并一些配置文件,而不是从旧文件的副本手动添加信息。
我第一次输入 m 来合并文件时,我收到以下消息。
Please specify merge tool to `THOR_MERGE` env.
Run Code Online (Sandbox Code Playgroud)
我进行了搜索并找到了这篇博文。这个人在谷歌搜索后找到的文件夹在我的 Mac 电脑上不存在。
FileMerge 不存在并且 DiffMerge 很旧。我还没有找到任何关于使用一个的信息rails app:update。
目前使用哪些 Mac 合并工具,我可以将 env var THOR_MERGE 设置为?
Sim*_*ell 11
偶然发现了这个答案,正在寻找同样的事情。
您可以通过THOR_MERGE如下设置env 变量来启动 vscode diff 工具:
THOR_MERGE="code -d $1 $2"
Run Code Online (Sandbox Code Playgroud)
这是假设您的 PATH 中有代码,您可以按照此处的说明进行设置。
RubyMine 也可以用作合并工具。为了使其在我的 macOS Monterey 系统上运行,我使用以下代码创建了一个新的 Bash 脚本/usr/local/bin/rubymine-merge(部分基于JetBrains Toolbox 提供的脚本):rubymine
#!/usr/bin/env bash
declare -- wait="-W"
bundle exec rubocop --server -A "$1"
open -na "$HOME/Library/Application Support/JetBrains/Toolbox/apps/RubyMine/ch-0/222.3739.56/RubyMine 2022.2 EAP.app/Contents/MacOS/rubymine" $wait --args merge "$2" "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
之后,我可以调用 Rails 更新脚本,如下所示:
THOR_MERGE=rubymine-merge bin/rails app:update
Run Code Online (Sandbox Code Playgroud)
该功能自 2022 年 8 月中旬的 RubyMine 2022.2.1 起开始运行。
Rails 更新脚本似乎要求合并工具的行为就像已收到参数一样--wait,因为在上次合并后,脚本会删除所有临时文件。对于 2022.2 版本的命令行脚本来说--wait,作为命令行参数传递似乎有问题,因此我对第-W3 行进行了硬编码。
我还在第 5 行插入了对rubocop的调用,以便 Rails app:update 脚本的建议更改已经与该项目的标准保持一致。如果这部分不能满足您的需求,请跳过该部分。我必须使用bundle exec rubocop而不是bin/rubocop因为 Rails app:update 脚本并不总是在项目根目录的上下文中运行。
/usr/local/bin/rubymine将该脚本与 JetBrains Toolbox 生成的脚本分开并不是最理想的。每次安装新版本的 RubyMine 时,实际 RubyMine 应用程序的路径都会发生变化。
XCode 似乎包含 /usr/bin/opendiff,它是一个启动 FileMerge.app 的二进制文件。所以我能够:THOR_MERGE=opendiff rails app:update
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |