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

Rails Application Template v5.2

Rails のアプリケーション環境をサクッと立ち上げるために Application Template を用意してみました。特徴としては, slim, rspec 初期化, rubocop の設定等々です。 https://gist.github.com/yuya-matsushima/827903535cd97894df74c385fcdc30b4 環境構築 docker-compose 環境の用意 Web サーバーなし, MySQL と Redis の image をベースに。 version: '3' services: app: image: fillininc/rails:2.6.3-18.04 volumes: - .:/opt/app - bundle:/usr/local/bundle ports: - 3000:3000 stdin_open: true depends_on: - db - redis db: image: mysql:8.0 command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci volumes: - database:/var/lib/mysql ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: app_development TZ: Asia/Tokyo redis: image: redis:5.0 ports: - 6379:6379 volumes: database: bundle: Gemfile を用意 source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem 'rails', '~> 5.2.3' Gem のインストール $ docker-compose run --rm app 起動した app 内の bash で下記コマンドを実行。 ...

2019/06/16 · Yuya MATSUSHIMA

プログラムが Docker コンテナ内で動作しているか判定する方法

動作させているプログラムを動作させている環境が Docker コンテナ内か判定する必要に遭遇しました。ちょっとしたバッチ処理でしたが Docker 環境に限り設定を追加する必要がありました。 どう対応していたか Dockerfile や docker-compose で ENV DOCKER_ENV=1 のように環境変数を設定していました。動作するプログラム内で環境変数を判定し設定を調整すれば対応できます。 この方法だと環境変数の指定忘れが起これば対象のプログラムは動作しなくなってしまいます。その他の方法がないか調べてみました。 .dockerenv を使った判定 Docker コンテナを立ち上げた場合, root に /.dockerenv が生成されるようです。そこでこのファイルの存在判定で対応します。Ruby の場合であれば次のコードで判定することができます。 if File.exist?(File.join('/', '.dockerenv')) # Docker コンテナ上でのみ実行する処理 end 参考: 今の環境がDocker Containerとして動作しているかどうかをコマンドで調べる これによって面倒な環境変数の管理が不要になりました。

2018/11/10 · Yuya MATSUSHIMA

vim 上で RuboCop を実行する

Ruby で書捨てのコードを書く場合に, とりあえずいつもの感じで RuboCop を実行したい場合の設定を .vimrc に追加しました。 .vimrc への追加 function! RuboCop() echo system( 'RuboCop --config ~/.rubocop.yml ' . bufname("%")) endfunction 当然のことですが global 環境に RuboCop のインストールと ~/.rubocop.yml の用意が必要です。 vim 上で実行 vim 上で次のコマンドを実行すると RuboCop が走ります。 :call RuboCop() 適当にローカルにあったコードで実行してみます。 とりあえず動きました。

2017/08/05 · Yuya MATSUSHIMA