peco を使って Rails Application Template を選択する

前回の記事 で Rails の Application Template を使ってみました。 それでも Rails プロジェクトを立ち上げるには手数が多く面倒だったので peco を使ってテンプレートを選択し初期化しようと思います。 仕組み GitHub に Application Template を管理するリポジトリを用意 GitHub API を使って該当のリポジトリからテンプレート一覧を取得 peco を使ってテンプレートを選択 ローカルで rails new を実行 その他のファイルも管理できるようにテンプレートリ管理リポジトリを用意し専用ディレクトリを作りました。public なリポジトリであれば GitHub API でディレクトリ内のファイル一覧を取得できます。 https://github.com/fillin-inc/templates コード 以下のコードを .zshrc でロードし zsh 上で呼び出します。 # peco-rails-template.zsh function peco-rails-template() { # GitHub API からテンンプレート情報取得 local JSON=$(curl --silent https://api.github.com/repos/fillin-inc/templates/contents/rails | jq '.[]') # template 名から選択 local TEMPLATE=$(echo ${JSON} | jq '.name' | grep '.rb' | sed -e 's/"//g' | sed -e 's/\.rb$//' | peco) if [ -z ${TEMPLATE} ]; then echo "template が取得できませんでした" return 1 fi # name が該当する download_url 取得 local SELECTED=$(echo ${JSON} | jq ". | select (.name == \"${TEMPLATE}.rb\") | .download_url" | sed -e 's/"//g') if [ -z ${SELECTED} ]; then echo "選択された template に該当する download_url が取得できませんでした" return 1 fi # git 管理されていない場合, 空 commit if [ -d .git ]; then git init git commit --allow-empty -m "initial commit" fi # Gemfile が存在しない場合デフォルト適用 if [ ! -f "Gemfile" ]; then curl -O --silent https://raw.githubusercontent.com/fillin-inc/templates/master/rails/example/Gemfile fi # rails gem を install bundle i --without production # template 指定で new bundle exec rails new . --force -d mysql -m ${SELECTED} } 課題 この処理には Application Template を使う都合でいくつか不都合があります。 ...

2019/07/27 · Yuya MATSUSHIMA