kawabatas技術ブログ

試してみたことを書いていきます

gem activejob-google_cloud_tasks を作成した

概要

Google Cloud Tasks の ActiveJob 用のアダプタの GEM を作成した。

https://rubygems.org/gems/activejob-google_cloud_tasks

使い方と、初めての gem 公開にあたっての反省と、更新の手順をメモしておく。

使い方

前提条件

Creating App Engine Queues

事前に gcloud app deploy queue.yaml で Cloud Tasks にキューを作成しておく。

インストール

gem 'activejob-google_cloud_tasks', '>= 0.1.2'

使う

  1. ActiveJob の queue_adapter を変更
Rails.application.config.active_job.queue_adapter = Activejob::GoogleCloudTasks::Adapter.new(
  project: 'MY_GOOGLE_CLOUD_TASKS_PROJECT',
  location: 'MY_GOOGLE_CLOUD_TASKS_LOCATION'
)
  1. rack アプリを mount
Rails.application.routes.draw do
  mount Activejob::GoogleCloudTasks::Rack, at: Activejob::GoogleCloudTasks::Config.path
end
  1. Job class を作成し、使う

例.

class SampleJob < ApplicationJob
  queue_as :default
  def perform(args)
    puts "hello, #{args[:name]}!"
  end
end
class SampleController < ApplicationController
  def job
    SampleJob.perform_later({name: 'ken'})
  end
end

Job の perform の引数は1つ。hash形式で渡す必要があるので注意。

Rails でのサンプルアプリはこちら

反省

0.1.0 を動かない状態で公開してしまった...

連休前に公開して、動かないことがわかったが、誰もダウンロードなんてしないだろうと思っていたが、週明け100以上ダウンロードされていた。本当に申し訳ない。

gem 'activejob-google_cloud_tasks', path: '/path/to/my-gem'

とすることで、ローカルの gem をインストールできることがわかったので、今後は手元の rails アプリで動くことを試してから公開する

バージョン更新手順

バージョンを上げる

module Activejob
  module GoogleCloudTasks
    VERSION = "0.1.2"
  end
end

ビルド

bundle exec rake build

リリース

bundle exec rake release