どうも、たくチャレ(@takuchalle)です。

Ruby on Rails その2 Advent Calendar 2018の1日目の記事です。

さて、みなさん、rails newしてますか?

既存のプロジェクトに参加したりしてると、チュートリアルや本を読んで勉強する時以外であまりrails newする機会はないかもしれません。

数少ないrails newチャンスの中でも、僕がまず行っておきたいことを紹介します。

継続的インテグレーションを導入すべき

ずばりこれに尽きます。

「開発に便利なgemを入れる」とか「不要なgemを消す」とか「rubocopの導入」とか細かいことを挙げればキリがないでしょう。 それにどんなgemを選ぶかはプロジェクトの規模、最近のトレンド、時代の流れや個人の趣味も大いに影響するので一概に言えないと思っています。

しかし、継続的インテグレーションの導入はどのプロジェクトでも普遍的であり、真っ先にすべきです。

真っ先に行う理由

「最初は一人で開発するし、テストが増えてからでいいんじゃない?」って思う人がいるかもしれません。

それでもrails new直後に行うべき理由は、

  • 環境がクリーン
  • テストを書くモチベーションアップ

あたりが挙げられます。

rails new直後は余計な依存関係が少ないので1、継続的インテグレーションのセットアップが比較的ラクです。もちろん最初はテストがないので何も起きませんが、その状態でエラーが起きてないことを確認することは非常に大事だと思います。人はどんなに気をつけても凡ミスをする生き物なので、機械的なチェックは早めに導入しておくと安心です。もちろん手元でテストしてからpushすべきですが、人って忘れますしね…

README.mdに継続的インテグレーションのステータスバッジでカバレッジ率を表示させたりでもしたら、テストを書くモチベーションが上がります2

継続的インテグレーションの設定方法

CircleCIGitLabの設定方法を紹介しておきます。最低限の構成はこんな感じでしょうか。

CircleCI の場合

# Ruby CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
#
version: 2
jobs:
  build:
    docker:
      # specify the version you desire here
      - image: circleci/ruby:2.5.3-node-browsers

    working_directory: ~/repo

    steps:
      - checkout

      # Download and cache dependencies
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "Gemfile.lock" }}
          # fallback to using the latest cache if no exact match is found
          - v1-dependencies-

      - run:
          name: install dependencies
          command: |
            bundle install --jobs=4 --retry=3 --path vendor/bundle

      - save_cache:
          paths:
            - ./vendor/bundle
          key: v1-dependencies-{{ checksum "Gemfile.lock" }}
                
      # Database setup
      - run: bundle exec rake db:create

      # run tests!
      - run:
          name: run tests
          command: |
            bundle exec rails test

GitLab の場合

test:
  stage: test
  script:
  - apt-get update -qy
  - apt-get install -y nodejs
  - gem install rails -v 5.2.1
  - bundle install
  - rails db:migrate RAILS_ENV=test
  - rails test

GitLabはもう少し詳しく書いた記事もあります。

GitLab の CI/CD 機能を使って RailsTutorial を master に push すると自動で Heroku にデプロイする方法について。

まとめ

rails newしたあとに真っ先にやることとして、継続的インテグレーションの導入を挙げました。

こういう煽りっぽいタイトルの記事を書いてみたかったので、書いてみました。ポエムに近い内容で、中身はないに等しかったですが…

Ruby on Rails その2 Advent Calendar 2018 の2日目の記事は、donchan922 さんの Ruby on Railsで簡単なToDoアプリを作ってみる です!


  1. すでにいろんな gem がインストールされますが・・・
  2. 個人差あり

同じカテゴリの記事