大家好,我来分享一个我编写的实用脚本,它可以帮助我运行 Discourse 的开发实例。
它会拉取所有最新的更改,拉取已安装插件的更新,运行所有迁移,并安装必要的 gem 和 pnpm 包。
脚本的缺点是它还会拉取核心自带的插件,这些插件实际上不会有任何作用,因为它们会随着第一个 git pull 命令一起更新。不过没关系。
注意:chatgpt.com 帮助我编写了 if 语句的逻辑(我最初的尝试失败了)。
~/rundiscourse.sh:
#!/bin/bash
cd ~/discourse
git pull
cd plugins
PLUGIN_DIR=~/discourse/plugins
for folder in "$PLUGIN_DIR"/*; do
if [ -d "$folder/.git" ]; then
output=$(git -C "$folder" pull)
if ! echo "$output" | grep -q "Already up to date."; then
echo "[$(basename "$folder")] $output"
fi
fi
done
cd ~/discourse
bundle install
pnpm install
bin/rails db:migrate
DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/ember-cli -u
然后,运行:
chmod +x rundiscourse.sh
然后,转到 ~/.bashrc 文件(使用 nano 或任何编辑器),如果还没有的话,添加以下内容(它在文件底部附近):
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
然后,将以下内容添加到 ~/.bash_aliases 文件中:
alias discourse="~/rundiscourse.sh"
关闭终端并重新打开。
现在,当你在终端中运行 discourse 时,你的开发环境应该会启动!
希望这对你有帮助!另外,如果我有什么做得不对或者可以改进的地方,请告诉我。谢谢!