2021年8月24日
プログラミング
rakeタスク+ slack-notifierでslack通知を作成してみた!
はじめに
今回はrakeタスクとslack-notifierを使ってRailsでslackに通知する機能を作成したいと思います!
背景
こちらのテーマを選んだ背景として、私自身が日々生活する中でslackで通知してくれるものを作ったところとても便利で、同じようにslack通知できるものを作ってみたいと考える人の一助になればと考えたためです!
rakeタスク+slack-notifierで通知を作ることにしましたが、rakeタスクを作成することにした理由としては通知を定期的に行うことも見据えたためです。
この記事ではrakeタスクの作成方法とslack-notifierの導入方法、そして実際のslackで通知する方法を順を追って説明していきます!
rakeタスクとは
rakeタスクとはターミナルなどのコマンドライン上で処理を実行することのできる機能です。今回は取り上げませんが、rakeタスクは定期的に処理を行うことができるので、決まった時間に通知を行ったり、DBと連携しているアプリケーションであればDBのデータを更新したりすることなどが可能になります!
rakeタスクの作成方法
ここからはrakeタスクの作成方法について順を追って説明していきます。
まずはターミナルで以下のコマンドを入力し、rakeタスク用のファイルを作成します。
rails g task task_notifier(任意のタスク名)
するとlib/tasks配下にtask_notifier.rakeが作成されますのでこちらに処理を記述していきます!
namespace :task_noifier do
task greeting: :environment do
puts 'こんにちは'
end
end
この後にも実行方法は記述しますが、namespace名:タスク名
でコマンドを実行するため、namespace内であれば複数のtaskを設定することができます。そのため同じような用途のタスクを複数設定したい場合は、同じファイルのnamespace内にまとめた方が良いかもしれません。
設定したタスクは
rails task_notifier:greeting
とターミナル上で入力すれば実行されます。
$ rails task_notifier:greeting
こんにちは!!
以上がrakeタスクの作成方法になります!
slack-notifierとは
slack-notifierとはslack通知をrailsで行うためのGemになります。簡単にメッセージを送信することができるだけでなく装飾を加えることもできますが、今回は簡単にメッセージを送信する方法を説明していきます。
WEBHOOK_URLの取得方法
通知を行うにあたって、まずはWEBHOOK_URLを取得する必要があります。公式にある方法に沿って取得を行なっていきます!
設定ページに移動する
公式に記述されているリンクより設定ページに移動し、slackに追加ボタンを押します。
チームとチャンネルの選択
右上のプルダウンからチームを選べるのでそちらから通知を行いたいチームを選択します。するとチャンネルの選択ができるようになります。選択ができたらIncoming Webhookインテグレーションを追加ボタンがクリックできるようになります。
Webhook URLを控える
Incoming Webhookインテグレーションを追加ボタンをクリックするとWebhook URLが表示させるので、こちらをメモしておきます。これで下準備は完了です!
slack通知の方法
ここからは先ほど選択したチャンネルに対して通知を実際に送ります。
gemのインストール
まずはgemのインストールになります。以下をGemfileに記述します。
gem 'slack-notifier'
記述ができたらインストールしましょう。
bundle install
通知用の処理を記述
ここからは通知用の記述を行います!今回はDBに紐づいていないため、app/models配下にnotifier.rbのみを作成し、notifierクラスを作成しました。作成後公式のExampleを参考に以下のように記述を行います。
class Notifier
def self.greeting
notifier = Slack::Notifier.new('先ほど取得したWEBHOOK_URL')
notifier.ping "こんにちは!"
end
end
なんとたったこれだけの記述で簡単な通知が可能になります!記述ができたらコンソール等で試してみてください。成功すると以下のように表示がされます!
以上が
補足
第三者にWEBHOOK_URLを知られてしまう危険性があるため、WEBHOOK_URLはそのまま記述せず、環境変数で設定するようにしましょう。
実際に通知を作成してみた!
最後にrakeタスクを使って通知を行います。ここまで来れば9割は終わっています。
rakeタスク内に作成したメソッドを追加する
最後はこれだけです。先ほどNotifier.rb内に作成したクラスメソッドをrakeタスクに記入します。
namespace :task_notifier do
task greeting: :environment do
Notifier.greeting
end
end
記述できたら再びrakeタスクを実行してみましょう。
rails task_notifier:greeting
成功すると無事slack上で通知されます!
まとめ
今回はrakeタスク+slack-notifierでslack通知を作成する方法を説明しました。
rakeタスクは定期的に実行できるとさらに効果的になります。私自身は生活の中でゴミ出しの日を定期的に通知してくれるものや、趣味の競馬で通知してくれるものを作成したりと日々の生活で役立ってくれています。
日々の仕事や生活をより快適にするために何か作ってみたい!と思いましたらぜひ試してみてください!
Rubyのお仕事に関するご相談
Bageleeの運営会社、palanではRubyに関するお仕事のご相談を無料で承っております。
zoomなどのオンラインミーティング、お電話、貴社への訪問、いずれも可能です。
ぜひお気軽にご相談ください。
この記事は
参考になりましたか?
0
0
関連記事
2021年12月22日
RDBでセットメニューを表現する方法
2021年12月11日
Railsでツリー構造アプリを作ってみた
2021年12月9日
モデルに書いていたメソッドをPOROに切り出してみた!
2021年12月7日
gem cancancanを使ってみた!
2021年11月15日
CustomCopで命名規則を作ってみた
2021年10月29日
clambyを利用したウイルススキャン
簡単に自分で作れるWebAR
「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。
palanARへpalanでは一緒に働く仲間を募集しています
正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。
運営メンバー
Eishi Saito 総務
SIerやスタートアップ、フリーランスを経て2016年11月にpalan(旧eishis)を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。
sasakki デザイナー
アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。
やまかわたかし デザイナー
フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReactやReact Nativeをよく触っています。
Sayaka Osanai デザイナー
Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。
はらた エンジニア
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています
こぼり ともろう エンジニア
サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。
ささい エンジニア
フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。
Damien
WebAR/VRの企画・開発をやっています。森に住んでいます。
ゲスト bagelee
かっきー
まりな
suzuki
miyagi
ogawa
雑食デザイナー。UI/UXデザインやコーディング、時々フロントエンドやってます。最近はARも。
いわもと
デザイナーをしています。 好きな食べ物はラーメンです。
taishi kobari
フロントエンドの開発を主に担当してます。Blitz.js好きです。
kubota shogo
サーバーサイドエンジニア。Ruby on Railsを使った開発を行いつつ月500kmほど走っています!
nishi tomoya
aihara
グラフィックデザイナーから、フロントエンドエンジニアになりました。最近はWebAR/VRの開発や、Blender、Unityを触っています。モノづくりとワンコが好きです。
nagao
SIerを経てアプリのエンジニアに。xR業界に興味があり、unityを使って開発をしたりしています。
Kainuma
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています
sugimoto
asama
ando
iwasawa ayane
oshimo
異業界からやってきたデザイナー。 palanARのUIをメインに担当してます。 これからたくさん吸収していきます!