Rails로 기본 정보 기술자 시험의 과거 문제 사이트를 만든다(6:SlackBOT편)
8603 단어 Rails기본 정보 기술자 시험slackbot슬랙루비
소개
유루~쿠 배운다. 모두의 웹 공부 커뮤니티. "뉴~부루회"를 운용중입니다.
htps // // 네 w부루. 기주 b. 이오/
거기서, 뭔가 교육용의 컨텐츠를 갖고 싶어~라고 생각하고, 이번 기획을 스타트했습니다!
Rails에서 기본 정보 기술자 시험의 과거 문제 사이트를 만듭니다!
최종 목표
히스토리
1: 구축편
htps : // 코 m / 네 w 부루 / 있어 ms / 에 d59f47 아 c645b19620f6
2:일본어화(i18n)편
htps : // 이 m/네 w부루/있어 ms/4f12fdb61bf6cd601545
3:부모와 자식 관계, 등록편
htps : // 코 m / 네 w 부루 / 있어 ms / f2 아 20289
4:부모와 자식 관계, 참조편
h tps:// 퀵했다. 작은 m / 네 w 불 / MS / 51b11BD02691 그림 FC2 c0d
5: API편
htps : // 코 m / 네 w 부루 / 있어 ms / 89f9f847 아 2648 bd d006c
6:SlackBOT편
본 페이지
7 : Heroku 배포 ~ 자동화 편
htps : // 코 m / 네 w 부루 / 있어 ms / 0 아 8 b02 에 1 8 c8 737 c7
이번에 할 일
SlackBOT 만들기
1. Slack에 BOT를 추가합니다.
BOT 토큰이 필요하므로,
아래 URL에서 BOT를 추가하고 토큰을 기록해 둡니다.
htps : // 아피. scck. 코 m / 보 t 우세 rs
2. 임의로 문제를 얻는 방법을 추가합니다.
먼저 모델에 필요한 메소드를 추가해 보겠습니다.
※ 물론, self를 붙여 클래스 메소드군요!
app/models/question.rb def self.random()
Question.all.sample
end
그래, 이것은 한 번 전체 레코드를 얻기 때문에 메모리를 압박하고 느리기 때문에 안돼요. . .
app/models/question.rb def self.random()
Question.find( Question.pluck(:id).sample )
end
그래서 먼저 ID를 무작위로 결정한 다음 얻는 방법으로 변경합니다.
3. Slack에 중얼거리는 작업을 추가합니다.
SlackAPI용 Gem( slack-api )이 있으므로 추가합니다.
./Gemfilegem 'slack-api'
먼저 rails g로 작업을 새로 만듭니다.
rails g task slack_bot
작성된 파일에 처리를 추가합니다.
lib/tasks/slack_bot.rakerequire 'slack'
Slack.configure do |config|
config.token = ENV["SLACK_API_TOKEN"] # BOTのトークンは公開できない為、環境変数で設定します。
end
namespace :slack_bot do
desc 'ランダムに問題をSlackに書き込む'
task :random_question => :environment do
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: 'times_にゅーぶる', username: 'FE問題_出題BOT')
end
end
4. 확인합시다.
먼저 rake 작업으로 등록되어 있는지 확인합시다.
$ rake -vT
〜 略 〜
rake slack_bot:random_question # ランダムに問題をSlackに書き込む
〜 略 〜
그럼 실행!
$ rake slack_bot:random_question
Slack을 확인하고, 이런 느낌이 표시되면 OK입니다!
※사전에 브라우저로부터, 문제를 등록해 둘 필요가 있습니다.
이번에는 여기까지
고마워요!
다음 번에는이 SlackBOT을 정기적으로 실행하는 환경을 만듭니다!
Reference
이 문제에 관하여(Rails로 기본 정보 기술자 시험의 과거 문제 사이트를 만든다(6:SlackBOT편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/newburu/items/aeeb9acb453da786bd59
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def self.random()
Question.all.sample
end
def self.random()
Question.find( Question.pluck(:id).sample )
end
gem 'slack-api'
rails g task slack_bot
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
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: 'times_にゅーぶる', username: 'FE問題_出題BOT')
end
end
$ rake -vT
〜 略 〜
rake slack_bot:random_question # ランダムに問題をSlackに書き込む
〜 略 〜
$ rake slack_bot:random_question
고마워요!
다음 번에는이 SlackBOT을 정기적으로 실행하는 환경을 만듭니다!
Reference
이 문제에 관하여(Rails로 기본 정보 기술자 시험의 과거 문제 사이트를 만든다(6:SlackBOT편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/newburu/items/aeeb9acb453da786bd59텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)