Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ユーザーのステータスが卒業になったら運営のチャットに通知されるようにしました #3471

Merged

Conversation

kotakawase
Copy link
Contributor

@kotakawase kotakawase commented Oct 29, 2021

前提

今回のIssueは開発環境と本番環境で実装する内容が変わってくるため、変更分をそのままマージすることができません。
なのでレビューで動作確認をする際は下でまとめた確認方法の手順を行っていただく必要があります。

確認方法

  1. 手元に本ブランチを持ってくる
  2. dotenv-railsというgemをインストールする
    参考:Railsで使える環境変数を管理できるgem(dotenv-rails)や.envの導入方法 - Qiita
# Gemfile
gem 'dotenv-rails' # 1番下に追加しました
% bundle install
  1. .envファイルをbootcapmディレクトリ配下に作成する
% touch .env
  1. 自分用のDiscordサーバーを作成する
    参考:Discord – サーバーの作り方と削除する方法 - 設定Lab

  2. 4.で作成したサーバーのウェブフックURLをコピーしておく
    参考:DiscordのWebhookについて

  3. コピーしたウェブフックURLを環境変数として使いたいので、作成した.envファイルには下の内容を追記する

DISCORD_TEST_WEBHOOK_URL = コピーしたウェブフックURL
  1. app/model/chat_norifier.rbのmessageメソッドの記述を変更する
# app/model/chat_norifier.rb
class ChatNotifier
  def self.message(
    message,
    username: 'ピヨルド',
    webhook_url: ENV['DISCORD_NOTICE_WEBHOOK_URL']
  )

-   if Rails.env.production?
+   if Rails.env.development?
      Discord::Notifier.message(message, username: username, url: webhook_url)
    else
      Rails.logger.info 'Message to Discord.'
    end
  end
..

Rails.env.development?にすることでtrueの分岐を実行することができます。
参考:【Rails】 envメソッドで環境を確認する方法と各コマンドの指定方法 - Pikawaka

  1. 動作確認をする
  • 管理画面で現役生の卒業ボタンをクリックする
    • image
  • 自分で作成したDiscordチャンネルに通知がくるのを確認する
    • スクリーンショット 2021-10-29 12 16 57

以上で確認は終わりになります。
不明な点がございましたらお手数おかけしますがご連絡のほどよろしくお願いいたします🙇‍♂️

@kotakawase kotakawase self-assigned this Oct 29, 2021
@kotakawase kotakawase changed the title wip: ユーザーのステータスが卒業になったら運営のチャットに通知されるようにしました ユーザーのステータスが卒業になったら運営のチャットに通知されるようにしました Oct 29, 2021
@kotakawase
Copy link
Contributor Author

kotakawase commented Oct 29, 2021

@mami-inuzuka さん
お手数ですがこちらレビューお願いいたします🙇‍♂️
(本番環境では環境変数を変更する必要があるため、ひとまずDraft Pull Requestで作成しています)

@mami-inuzuka
Copy link
Contributor

@kawase-k お疲れ様です!!こちら確認いたしました✨
大変わかりやすくまとめてくださりありがとうございます🙇🏻‍♂️
そして動作確認も問題ありませんでした👌良さそうだと思います😊
(環境変数の扱いなども勉強になりました🙏!)

一点質問なのですが、今回使用したdotenv-railsはローカル環境での確認用に使うものであって本番では何か別の方法で環境変数が管理されている感じなのでしょうか?💡
最終的にどうやって実際の値が本番環境に反映されることになるんだろうと気になり質問させていただきました🙏
(そこのあたりよくわかっておらず恐縮です🙇🏻‍♂️)

@kotakawase
Copy link
Contributor Author

@mami-inuzuka さん
レビューありがとうございます🙇‍♂️

一点質問なのですが、今回使用したdotenv-railsはローカル環境での確認用に使うものであって本番では何か別の方法で環境変数が管理されている感じなのでしょうか?💡

dotenv-railsについてはその認識で使っていました。
本来はこういった共同開発でも環境変数を共存させて使うためのgemっぽいですが、本Issueの完了要件では自分のDiscordチャンネルに通知されるようになっていればOKだったのであまり深く考えていませんでした…。

本番環境での通知方法についてですが、僕が知る限りですと今回下のファイルで設定した環境変数にFBCの運営チャットまでの値を代入することで通知が飛ぶようになっているそうです〜。
参考:#3368 (comment)

def notify_to_chat(user)
ChatNotifier.message(
"「#{user.login_name}さんが卒業になりました」",
webhook_url: ENV['DISCORD_TEST_WEBHOOK_URL']
)
end

管理されているか不確かなのですが、以下のファイルが関連してそうな気がしました!
/bootcamp/cloudbuild.yamlの77,78行目と112,113行目

当てずっぽうなところもありましたがコメントさせていただきました😅
よろしくお願いいたします🙏

@kotakawase kotakawase marked this pull request as ready for review November 1, 2021 14:39
@kotakawase
Copy link
Contributor Author

メモ: レビュー依頼の時はDraft Pull RequestではなくPull Requestにしないといけないので先ほど変更しました

@kotakawase
Copy link
Contributor Author

@komagata さん
こちらレビューお願いいたします🙇‍♂️

チームメンバーへのレビュー依頼のときは、こちらの#3471 (comment) 手順を作業していただいた上で通知の確認をするようにお願いしていました。

成果としては、

  • 自分で作成したDiscordチャンネルに通知されるようになりました
  • 用意したチャンネルまでは環境変数を使って通知されるようになっています

お聞きしたいことがあるのですが、

  • 本番環境では環境変数はどういった仕組みで定義されていて使えるようになっているのでしょうか?

お手数おかけしますがご確認のほどよろしくお願いいたします🙏

@komagata
Copy link
Member

komagata commented Nov 1, 2021

@kawase-k

本番環境では環境変数はどういった仕組みで定義されていて使えるようになっているのでしょうか?

Bootcampの本番アプリはGoogle Cloud PlatformのCloud Buildというのでデプロイしています。
Cloud Buildでは環境変数を設定できるので、本番だけ別の環境変数を設定できるようになっています。

def notify_to_chat(user)
ChatNotifier.message(
"「#{user.login_name}さんが卒業になりました」",
webhook_url: ENV['DISCORD_TEST_WEBHOOK_URL']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

本物の環境変数の名前にして見てください〜
本番環境ではその名前の環境変数に本物の値を設定するようにこちらの方でやります〜。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら卒業通知用として環境変数の名前をつけてみました。
再度ご確認のほどよろしくお願いいたします🙇‍♂️

@kotakawase kotakawase force-pushed the feature/notify-the-management-chat-that-you-have-graduated branch from 20a273a to 0e63f24 Compare November 1, 2021 16:00
@kotakawase
Copy link
Contributor Author

@komagata さん
ご教示いただきありがとうございます🙏

GCPといったデプロイ方法があるんですね。
ひとまずHerokuみたいなもの?と理解しました!

Cloud Buildでは環境変数を設定できるので、本番だけ別の環境変数を設定できるようになっています。

そういうことだったんですね、勉強になります!!
デプロイ方法の仕組みついて知れてよかったです😆

@komagata
Copy link
Member

komagata commented Nov 2, 2021

@kawase-k GCPはサービス・プラットフォームの名前です。AWSと同じですね。

その中に、Cloud BuildやCloud Runといったさまざまなサービスがあります。
AWSで言うとEC2やS3があるみたいな感じです。

@mami-inuzuka
Copy link
Contributor

かわせさん、こまがたさんありがとうございます!!

本番環境において環境変数の設定はCloud Build側で行っているんですね!
どこから読み込むかが異なっているだけでソースコードには本番で使用するのと同じ変数を記述すればいいということを理解しました!😊

勉強になりました🙏😊

@komagata
Copy link
Member

komagata commented Nov 2, 2021

📝 komagataのレビュー待ち

Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認しました、OKですー🙆‍♂️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants