railsでバッチ処理を作るときに最初にやること

rails runnerで動かすちょっとした処理を作るときにやることをまとめてみようかと思います。

手順

  1. railsプロジェクト新規作成
  2. 余計なファイル・ディレクトリ削除
  3. .gitignore作成
  4. 必要なgemインストール
  5. Gemfile編集
  6. bundle install
  7. オートロードパス追加
  8. 実装
  9. 実行

前提

この記事は以下の環境で動作確認したものになります

  • ruby 2.4.3
  • Rails 5.2.3

railsプロジェクト新規作成

rails new new_project

余計なファイル・ディレクトリ削除

webアプリケーションつくるわけではないので不要なディレクトリ、ファイルを削除します

cd new_project
rm -rf app/ storage/ test/ tmp/ public/ package.json

.gitignore作成

git管理したくないディレクトリを.gitignoreに登録

vim .gitignore
vendor/
log/

必要なgemインストール

つくりたい処理に合わせて必要なgemをインストール

gem install google_drive

Gemfile編集

vim Gemfile

末尾あたりに追加

gem 'therubyracer', platforms: :ruby
これを追加しておかないとrails runner実行時に
「There was an error while trying to load the gem ‘uglifier’.」
のようなエラーがおきます

bundle install

gemは vendor/bundle 以下にオンストールパスを指定

bundle install --path vendor/bundle

オートロードパス追加

vim config/application.rb
module NewProject
  class Application < Rails::Application
    config.load_defaults 5.2
    config.enable_dependency_loading = true                     ←追加
    config.autoload_paths += Dir["#{config.root}/lib"]          ←追加
  end
end

実装

単純に「hello」と出力するだけのクラスを作成

vim lib/tasks/test.rb
class Tasks::Test
  def self.hello
    puts "hello"
  end
end

実行

bundle exec rails runner "Tasks::Test.hello"

「hello」が出力されました

Running via Spring preloader in process 5239
hello

最後に

railsのプロジェクト最初に作るとき、いつも「lib」のオートロード追加と「therubyracer」のgem追加忘れで手間取っていました。

これで次回からはスムーズに実装開始できるはず!