LoginSignup
0
0

More than 3 years have passed since last update.

Railsで基本情報技術者試験の過去問題サイトを作る(7:Herokuデプロイ〜自動化編)

Posted at

はじめに

ゆる〜く学ぶ。みんなのWeb勉強コミュニティー。 「にゅ〜ぶる会」を運用中です。
https://newburu.github.io/

そこで、何か教育用のコンテンツが欲しいなぁ〜と思い立ち、今回の企画をスタートしました!

Railsで基本情報技術者試験の過去問題サイトを作ります!

最終目標

  • 問題・回答の登録は、Scaffoldで簡易でOK
  • APIを用意して、ランダムに問題を抽出する機能を追加する
  • TwitterBOT、LINEBOT、SlackBOTが出来たら良いな

履歴

1:構築編
  https://qiita.com/newburu/items/ed59f47ac645b19620f6
2:日本語化(i18n)編
  https://qiita.com/newburu/items/4f12fdb61bf6cd601545
3:親子関係、登録編
  https://qiita.com/newburu/items/f2a20289be5ec1fc1b77
4:親子関係、参照編
  https://qiita.com/newburu/items/51b11bd02691efc2cc0d
5:API編
  https://qiita.com/newburu/items/89f9f847a2648bdd006c
6:SlackBOT編
  https://qiita.com/newburu/items/aeeb9acb453da786bd59
7:Herokuデプロイ〜自動化編
  本ページ

今回やる事

  • Herokuにデプロイし、定期的にSlackに投稿する設定を行う。

Herokuにデプロイします

1. GitHub、Herokuにプロジェクトを新規作成します。

この辺りは、既に色々情報が溢れていると思いますので、省略させて頂きます。

  • GitHubにソース一式をプッシュします。
  • HerokuとGitHubを紐付け、Herokuにデプロイします。
  • MySQLを追加します。
  • DBを作成する。(rake db:migrate)
  • DBに問題を登録する。

2. 環境変数を設定しましょう。

デプロイまで完了したら、本プロダクトに必要な環境設定を行いましょう。

その前に、自由に設定変更出来るように、ソースに環境変数を追加しました。

lib/tasks/slack_bot.rake
require 'slack'

Slack.configure do |config|
  config.token = ENV["SLACK_API_TOKEN"]  # BOTのトークンは公開できない為、環境変数で設定します。
end

namespace :slack_bot do
  desc 'ランダムに問題をSlackに書き込む'
  task :random_question => :environment do
    question = Question.random
    source = "出典:#{question.category1}年度 #{question.category2} 基本情報技術者試験 午前 問#{question.category3}"
    msg = "【問題】\n#{question.msg}\n\nア #{question.answers[0].msg}\nイ #{question.answers[1].msg}\nウ #{question.answers[2].msg}\nエ #{question.answers[3].msg}\n\n#{source}"

    # text:出力テキスト、channel:出力先のチャンネル名、username:表示ユーザ名
    Slack.chat_postMessage(text: msg, channel: ENV["SLACK_CHANNEL_NAME"], username: ENV["SLACK_BOT_NAME"])
  end
end

設定する環境変数は以下の通り。

環境変数 内容
SLACK_API_TOKEN スラックのBOTトークン
SLACK_CHANNEL_NAME 出力先のチャンネル名
SLACK_BOT_NAME 表示ユーザ名

3. 定期的に実行する設定を行います。

Herokuに「Heroku Scheduler」というものがありますので、それを追加してください。
Heroku Scheduler

設定内容は、以下の通り。

設定値 内容 補足
実行時間 毎日PM3時 UTCでの設定のため、日本時間(JST)にすると、毎日AM0時
実行コマンド rake slack_bot:random_question

4. 手動で動かして問題ないか確認しましょう。

手動実行
heroku run rake slack_bot:random_question --app {Herokuアプリ名}

これで思い通りのチャンネルに投稿されればOKです!

今回はここまで

ありがとうございました!
次回は、基本情報の問題には、表が含まれる場合がありますので、問題に画像を登録出来るようにしたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0