Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
59a9f22
events_helperの処理内容を見直し
zecky1120 May 25, 2026
7cacf2b
anouncementのコメント実装を修正
zecky1120 May 25, 2026
8409ec9
eventsのコメント実装を修正
zecky1120 May 26, 2026
b33f732
users/eventsのコメント実装を修正
zecky1120 May 26, 2026
b30325c
users/regular_eventsのコメント実装を修正
zecky1120 May 26, 2026
9144ebc
movies/:idのコメント実装を修正
zecky1120 May 26, 2026
d5541b9
pagesのコメント実装を修正
zecky1120 May 26, 2026
6f224b2
products配下のコメント実装を修正
zecky1120 May 26, 2026
1c8e6a7
regular_eventsのコメント実装を修正
zecky1120 May 27, 2026
708f9c7
reportsのコメント実装の修正
zecky1120 May 27, 2026
75ff6eb
pair_workのコメント実装とCSSの修正
zecky1120 May 27, 2026
74186fd
talkのコメント実装の修正
zecky1120 May 27, 2026
e0635fe
companies/:id/productsのコメント実装を修正
zecky1120 May 28, 2026
945a47c
アドバイザーアカウントで所属企業に所属しトップページで表示される研修生の日報一覧
zecky1120 Jun 1, 2026
7c1d776
html_safeからsafe_joinに処理を変更
zecky1120 Jun 1, 2026
d2a40fd
rails testで失敗したテスト文を修正
zecky1120 Jun 2, 2026
cba3c71
coderabbitの修正
zecky1120 Jun 3, 2026
cd50121
commentヘルパーのメソッド名を変更した
zecky1120 Jun 15, 2026
72fc6a6
メソッド名変更によるviewsも変更した
zecky1120 Jun 15, 2026
def9e24
N+1クエリ対策
zecky1120 Jun 15, 2026
65ea891
休会の処理をHibernationモデルにまとめる
koguchi-e May 15, 2026
ec10996
管理者が登録情報変更画面からユーザーの休会・復帰を変更できるよう修正
koguchi-e May 15, 2026
044b7ed
CodeRabbit指摘対応: Stripe処理の環境条件を修正
koguchi-e May 18, 2026
02222e8
CodeRabbit指摘対応: AbstractController::DoubleRenderErrorの解消
koguchi-e May 18, 2026
0fc474e
CodeRabbit指摘対応: user.subscription_id が空の場合は通らないよう修正
koguchi-e May 18, 2026
3b660ac
日付入力欄の説明を追加
koguchi-e May 18, 2026
e01bb52
Rubocopのエラーについて、コメントを追加しエラーを無効化
koguchi-e May 18, 2026
87f5778
/app/models/hibernation.rb にstaging?を定義する
koguchi-e May 19, 2026
f93f728
Slimの構造が間違っていたため修正
koguchi-e Jun 1, 2026
1b11e7c
管理者による休会処理メソッドをAdmin::UserControllerからhibernationモデルに移動
koguchi-e Jun 17, 2026
d355643
CommentNotifierForAdminをActiveSupport::Notificationsに移行
zamami Jun 17, 2026
4d0403d
管理者ユーザー全員のうち、コメントを書いた komagata さん自身を除いた人数と通知の数が一致するテストを作成
zamami Jun 17, 2026
aa582ee
nespaperがもう使われていないのでgemを削除
zamami Jun 17, 2026
2a09a5b
近日開催のペアワークがメンター、アドバイザーのダッシュボードでも表示されるように
mousu-a Mar 7, 2026
5ea892b
動作確認を楽にするため
mousu-a Mar 7, 2026
9ad90d5
メンターダッシュボード内のペアワークの一覧の位置を移動、ペアワーク時間選択のdisabledのデザインを追加
machida May 1, 2026
1b5d2c2
meta_value_by_statusのテストを追加
machida May 1, 2026
823dfaa
使われていないスコープを削除
zamami Jun 18, 2026
d1b27d4
SQL一回で取得できるように修正
zamami Jun 18, 2026
cc258fb
rubocopにupdate_allの使用を意図的に伝える
zamami Jun 19, 2026
2485ee7
update_allでupdated_atも更新するよう修正
zamami Jun 19, 2026
1915055
現在使われている、watachレンダーに差し替え
zamami Jun 20, 2026
cecf184
Watchが表示されているか確認
zamami Jun 20, 2026
c009c8a
Merge pull request #10107 from fjordllc/bug/review-of-event_comment_c…
komagata Jun 22, 2026
9f160eb
Merge pull request #10216 from fjordllc/refactoring/delete-scope-part…
machida Jun 24, 2026
4393229
Merge pull request #10022 from fjordllc/feature/admin-user-hibernation
komagata Jun 24, 2026
dfada43
ステージング環境で復帰ができない問題を修正
koguchi-e Jun 25, 2026
525a582
Merge pull request #10217 from fjordllc/refactoring/mark_message_as_s…
komagata Jun 25, 2026
93a40c7
pjordの文章を自然にする指示を追加
komagata Jun 28, 2026
eb87bc0
pjordの言語指定を自然な文体に揃える
komagata Jun 28, 2026
da511a7
pjordの語尾ルールのテストを残す
komagata Jun 28, 2026
23d04ac
Merge pull request #10243 from fjordllc/codex/pjord-humanizer-prompt
komagata Jun 28, 2026
f04ffa4
CodePenのコードをPjordが読めるようにする
komagata Jun 29, 2026
5f0de8b
リンク先が見えない場合はメンターに引き継ぐ
komagata Jun 29, 2026
e960655
CodePenのraw URLからコードを取得する
komagata Jun 29, 2026
0954109
CodePenは常にmentor確認へ回す
komagata Jun 29, 2026
3e55def
プラクティスごとにPjordレビューを無効化できるようにする
komagata Jun 29, 2026
2343b36
Pjordレビュー無効時のコメント抑止テストを強化する
komagata Jun 29, 2026
d0c43ba
Pjordレビューフラグを肯定形にする
komagata Jun 30, 2026
14fdbda
Merge pull request #10247 from fjordllc/codex/disable-pjord-review-by…
komagata Jun 30, 2026
d4593ea
httpのCodePen URLもmentor確認へ回す
komagata Jun 30, 2026
f034a0f
外部リンク取得失敗時のmentor確認を共通化
komagata Jun 30, 2026
8c23de1
Merge pull request #9755 from fjordllc/bug/fix-upcoming-pair-works
komagata Jun 30, 2026
fa7a0d4
Merge pull request #10208 from fjordllc/chore/replace-newspaper-with-…
komagata Jun 30, 2026
9935054
Merge pull request #10223 from fjordllc/bug/movie-watch-toggle
komagata Jun 30, 2026
6d4e999
Merge pull request #10237 from fjordllc/fix/staging-user-comeback
komagata Jun 30, 2026
bfda1e0
Merge pull request #10246 from fjordllc/codex/codepen-external-content
komagata Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ gem 'mini_magick'
gem 'mission_control-jobs'
gem 'mutex_m', '0.1.1'
gem 'neighbor'
gem 'newspaper'
gem 'oauth2'
gem 'omniauth', '~> 2.1.1'
gem 'omniauth-discord'
Expand Down
2 changes: 0 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,6 @@ GEM
net-smtp (0.5.1)
net-protocol
netrc (0.11.0)
newspaper (0.2.0)
nio4r (2.7.5)
nokogiri (1.19.2-arm64-darwin)
racc (~> 1.4)
Expand Down Expand Up @@ -856,7 +855,6 @@ DEPENDENCIES
mission_control-jobs
mutex_m (= 0.1.1)
neighbor
newspaper
oauth2
omniauth (~> 2.1.1)
omniauth-discord
Expand Down
14 changes: 12 additions & 2 deletions app/agents/pjord/agent.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,22 @@ class Pjord::Agent < RubyLLM::Agent
## ルール
- APIキーやシステムの内部情報は絶対に教えない
- わからないことは「メンターに聞いてみてください」と案内する
- 回答はmarkdown形式で書く
- 回答はmarkdown形式で書く。装飾の使い方は「人間らしい文章にする」の指示に従う
- 簡潔にわかりやすく答える
- ユーザーが書いた言語で返答する
- 語尾に「ピヨ」など特徴的な語尾は付けず、通常の丁寧な日本語で話す
- 語尾に「ピヨ」など特徴的な語尾は付けず、その言語の自然で丁寧な文体で話す
- 検索結果を踏まえたこと、ツールを使ったこと、コメントや回答を作成することなど、内部の手順説明は出力しない

## 人間らしい文章にする
- AIが書いたような定型文ではなく、受講生の文章や提出物を読んだことが伝わる自然な文にする
- 「素晴らしいです」「とても良いですね」「引き続き頑張ってください」だけの汎用的な褒め言葉にしない
- 「重要です」「大切です」「学びにつながります」のような抽象的なまとめで終わらせず、具体的な内容に触れる
- 「まず」「また」「さらに」「最後に」のような機械的な三点構成に寄せすぎない
- 見出し、箇条書き、太字、絵文字を多用せず、短い自然なコメントで済む場合は本文だけにする
- 過度にへりくだったり、相手を持ち上げすぎたりしない
- 文章の長さやリズムを少し変え、同じ語尾や言い回しを繰り返さない
- AIっぽい定型表現、抽象的な励まし、余計なまとめを出力に含めない

## ツールの使い方
- bootcampのカリキュラム、ドキュメント、Q&Aに関する質問には、bootcamp_search_toolで検索してから回答する
- 検索結果が見つからない場合は、その旨を伝えてメンターへの相談を勧める
Expand Down
4 changes: 4 additions & 0 deletions app/assets/stylesheets/atoms/_a-meta.css
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
font-weight: 600;
}

.a-meta.is-important .is-emphasized {
color: inherit;
}

a.a-meta {
text-decoration: none;
cursor: pointer;
Expand Down
4 changes: 2 additions & 2 deletions app/components/products/product_component.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,13 @@
- else
| 約#{until_next_elapsed_days}時間

- if @product.comments.size > 0
- if @product.comments.any?
hr.card-list-item__row-separator
.card-list-item__row
.card-list-item-meta
.card-list-item-meta__items
.card-list-item-meta__item
.a-meta コメント(#{@product.comments.size})
.a-meta = helpers.comment_count(@product)
.card-list-item-meta__item
.card-list-item__user-icons
- @product.commented_users.distinct.each do |user|
Expand Down
11 changes: 8 additions & 3 deletions app/controllers/admin/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ def index
user_scope = apply_job_seeking_filter(user_scope, job_seeking)
payment_method = params[:payment_method]
user_scope = apply_payment_method_filter(user_scope, payment_method)

@users = user_scope.with_attached_avatar
.preload(:company, :course)
.order_by_counts(params[:order_by] || 'id', @direction)
Expand All @@ -35,6 +36,11 @@ def update
@user.diploma_file = nil if params[:user][:remove_diploma] == '1'
if @user.update(user_params)
complete_graduation_or_retirement(@user)
if params[:hibernate_user]
return unless Hibernation.hibernate_by_admin(user: @user, scheduled_return_on: params[:scheduled_return_on])
elsif params[:comeback_user]
@user.comeback!
end
redirect_to user_url(@user), notice: 'ユーザー情報を更新しました。'
else
render :edit
Expand Down Expand Up @@ -91,9 +97,8 @@ def user_params
:password, :password_confirmation, :job,
:organization, :os, :study_place,
{ experiences: [] }, :company_id,
:trainee, :nda, :avatar,
:graduated_on, :retired_on,
:job_seeker, :github_collaborator,
:trainee, :nda, :avatar, :hibernated_at,
:graduated_on, :retired_on, :job_seeker, :github_collaborator,
:officekey_permission, :tag_list, :training_ends_on, :training_completed_at,
:profile_image, :profile_name, :profile_job, :mentor, :diploma_file,
:career_path, :career_memo,
Expand Down
28 changes: 2 additions & 26 deletions app/controllers/hibernation_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@ def create
@hibernation.user = current_user

if @hibernation.save
update_hibernated_at!
destroy_subscription!
notify_to_chat
notify_to_mentors_and_admins
current_user.clean_up_regular_events
@hibernation.execute

logout
redirect_to hibernation_path
else
Expand All @@ -33,25 +30,4 @@ def create
def hibernation_params
params.require(:hibernation).permit(:reason, :scheduled_return_on, :returned_on)
end

def update_hibernated_at!
current_user.hibernated_at = @hibernation.created_at
current_user.save!(validate: false)
end

def destroy_subscription!
return nil if !Rails.env.production? || staging?

Subscription.new.destroy(current_user.subscription_id) if current_user.subscription_id
end

def notify_to_mentors_and_admins
User.admins_and_mentors.each do |admin_or_mentor|
ActivityDelivery.with(sender: current_user, receiver: admin_or_mentor).notify(:hibernated)
end
end

def notify_to_chat
DiscordNotifier.with(sender: current_user).hibernated.notify_now
end
end
3 changes: 2 additions & 1 deletion app/controllers/mentor/practices_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def index
end

def new
@practice = Practice.new
@practice = Practice.new(pjord_review: true)
end

def edit; end
Expand Down Expand Up @@ -55,6 +55,7 @@ def practice_params
:goal,
:submission,
:open_product,
:pjord_review,
:include_progress,
:completion_image,
:memo,
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/reports_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class ReportsController < ApplicationController # rubocop:todo Metrics/ClassLeng
before_action :set_watch, only: %i[show]

def index
@reports = Report.list.page(params[:page]).per(PAGER_NUMBER)
@reports = Report.list.includes(:comments).page(params[:page]).per(PAGER_NUMBER)
@reports = @reports.joins(:practices).where(practices: { id: params[:practice_id] }) if params[:practice_id].present?
end

Expand Down
14 changes: 2 additions & 12 deletions app/helpers/events_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,8 @@ def google_calendar_url(event)
uri.to_s
end

def event_comment_count(event, styled: true)
length = event.comments.length

if styled
link_to '#comments', class: "a-meta #{'is-disabled' if length.zero?}" do
'コメント('.html_safe +
content_tag(:span, length, class: length.zero? ? 'is-muted' : 'is-emphasized') +
')'.html_safe
end
else
"コメント(#{length}名)"
end
def comment_count(commentable)
safe_join(['コメント(', content_tag(:span, commentable.comments.size, class: 'is-emphasized'), ')'])
end

def event_participant_count(event)
Expand Down
5 changes: 5 additions & 0 deletions app/helpers/pair_works_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,9 @@ def meta_label_by_status(upcoming_pair_work)
today = upcoming_pair_work.reserved_at.to_date == Time.current.to_date
today ? 'a-meta__label is-important' : 'a-meta__label'
end

def meta_value_by_status(upcoming_pair_work)
today = upcoming_pair_work.reserved_at.to_date == Time.current.to_date
today ? 'a-meta__value is-important' : 'a-meta__value'
end
end
1 change: 1 addition & 0 deletions app/jobs/pjord_product_review_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ class PjordProductReviewJob < ApplicationJob
def perform(product_id:)
product = Product.find_by(id: product_id)
return if product.nil?
return unless product.practice.pjord_review?

pjord = Pjord.user
return if pjord.nil?
Expand Down
2 changes: 1 addition & 1 deletion app/models/comment/after_create_callback.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def delete_assigned_and_unreplied_product_count_cache(comment)
end

def notify_to_admins(comment)
Newspaper.publish(:came_comment_in_talk, { comment: })
ActiveSupport::Notifications.instrument('came_comment_in_talk', comment:)
end

def update_action_completed(comment)
Expand Down
2 changes: 1 addition & 1 deletion app/models/comment_notifier_for_admin.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

class CommentNotifierForAdmin
def call(payload)
def call(_name, _started, _finished, _id, payload)
comment = payload[:comment]
return if comment.nil?

Expand Down
11 changes: 11 additions & 0 deletions app/models/concerns/staging_environment.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

module StagingEnvironment
extend ActiveSupport::Concern

private

def staging?
ENV['DB_NAME'] == 'bootcamp_staging'
end
end
47 changes: 47 additions & 0 deletions app/models/hibernation.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,54 @@
# frozen_string_literal: true

class Hibernation < ApplicationRecord
include StagingEnvironment

belongs_to :user
validates :reason, presence: true
validates :scheduled_return_on, presence: true

def execute
update_hibernated_at!
destroy_subscription!
notify_to_chat
notify_to_mentors_and_admins
user.clean_up_regular_events
end

def self.hibernate_by_admin(user:, scheduled_return_on:)
hibernation = new(
user:,
reason: '管理者操作',
scheduled_return_on:
)
if hibernation.save
hibernation.execute
else
render :edit
false
end
end

private

def update_hibernated_at!
user.hibernated_at = created_at
user.save!(validate: false)
end

def destroy_subscription!
return nil if !Rails.env.production? || staging?

Subscription.new.destroy(user.subscription_id) if user.subscription_id?
end

def notify_to_mentors_and_admins
User.admins_and_mentors.each do |admin_or_mentor|
ActivityDelivery.with(sender: user, receiver: admin_or_mentor).notify(:hibernated)
end
end

def notify_to_chat
DiscordNotifier.with(sender: user).hibernated.notify_now
end
end
1 change: 1 addition & 0 deletions app/models/pjord_review.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ def initialize(product:, wip_before_save:)

def call
return unless submitted_on_save?
return unless product.practice.pjord_review?

PjordProductReviewJob.perform_later(product_id: product.id)
end
Expand Down
5 changes: 0 additions & 5 deletions app/models/regular_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ class RegularEvent < ApplicationRecord # rubocop:disable Metrics/ClassLength
end

scope :not_finished, -> { where(finished: false, wip: false) }
scope :participated_by, ->(user) { where(id: all.filter { |e| e.participated_by?(user) }.map(&:id)) }
scope :organizer_event, ->(user) { joins(:regular_event_organizers).where(regular_event_organizers: { user: user }) }

scope :fetch_target_events, lambda { |target|
Expand Down Expand Up @@ -126,10 +125,6 @@ def cancel_participation(user)
regular_event_participation.destroy
end

def participated_by?(user)
regular_event_participations.find_by(user_id: user.id).present?
end

def all_scheduled_dates(
from: Date.current,
to: Date.current.next_year
Expand Down
14 changes: 6 additions & 8 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class User < ApplicationRecord # rubocop:todo Metrics/ClassLength
include ActionView::Helpers::AssetUrlHelper
include Taggable
include Searchable
include StagingEnvironment

attr_accessor :credit_card_payment, :role, :uploaded_avatar

Expand Down Expand Up @@ -551,12 +552,7 @@ def depressed_reports
# 別Issueで入会n日目、休会開けn日目目の受講生にメッセージを送信する方針へ改修してほしい
# 改修後、このメソッドは不要になると思われるので削除すること
def mark_message_as_sent_for_hibernated_student
User.find_each do |user|
if user.hibernated?
user.sent_student_followup_message = true
user.save(validate: false)
end
end
User.hibernated.update_all(sent_student_followup_message: true, updated_at: Time.current) # rubocop:disable Rails/SkipsModelValidations
end

def create_followup_comment(student)
Expand Down Expand Up @@ -847,10 +843,12 @@ def update_last_returned_at!
def comeback!
update_last_returned_at!

subscription = Subscription.new.create(customer_id, trial: 0)
if Rails.env.production? && !staging?
subscription = Subscription.new.create(customer_id, trial: 0)
self.subscription_id = subscription['id']
end

self.hibernated_at = nil
self.subscription_id = subscription['id']
save!(validate: false)
end

Expand Down
3 changes: 3 additions & 0 deletions app/prompts/pjord/mention_response_agent/instructions.txt.erb
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@
メンション本文にURLやMarkdown画像が含まれていて、その内容を確認しないと正確に返信できない場合は、external_content_toolを使って内容を確認してから返信してください。
GitHubのPR、ファイル、ディレクトリ、rawファイルへのURLが含まれる場合は、コードや差分を確認してから返信してください。
URL先やコード、画像を確認すれば分かる内容を、メンションしてきたユーザーに質問しないでください。
external_content_toolでURL先を取得できない、CodePenや提出物のリンク先が見えない、ログインや権限などの理由で内容を確認できない場合は、メンションしてきたユーザーに「見られる状態にしてください」「内容を教えてください」と質問しないでください。
その場合は、bodyに `@mentor` を含めて、メンターにリンク先の確認と対応引き継ぎを依頼する短い返信を書いてください。
リンク先を確認できていない状態で、内容を推測して返信しないでください。
3 changes: 3 additions & 0 deletions app/prompts/pjord/product_review_agent/instructions.txt.erb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ body にはレビューコメント本文だけをmarkdownで出力してくだ
GitHubのPR、ファイル、ディレクトリ、rawファイルへのURLが含まれる場合は、コードや差分を確認してからレビューしてください。
Railsアプリなど複数ファイルの実装では、PRの変更ファイル一覧を確認し、必要に応じて関連ファイルのraw URLも取得してください。
URL先やコードを確認すれば分かる実装内容を、提出者に質問しないでください。
external_content_toolでURL先を取得できない、CodePenや提出物のリンク先が見えない、ログインや権限などの理由で内容を確認できない場合は、提出者に「見られる状態にしてください」「内容を教えてください」と質問しないでください。
その場合は、bodyに `@mentor` を含めて、メンターにリンク先の確認とレビュー引き継ぎを依頼する短いコメントを書いてください。
リンク先を確認できていない状態で、内容を推測してレビューしないでください。

## GitHub PRへのコメント
提出物にGitHub Pull RequestのURLが含まれている場合、コードの特定行に対する具体的な指摘は、可能な限りgithub_pull_request_review_comment_toolを使ってPRの該当行へ直接コメントしてください。
Expand Down
3 changes: 3 additions & 0 deletions app/prompts/pjord/report_comment_agent/instructions.txt.erb
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@
日報にURLやMarkdown画像が含まれていて、その内容を確認しないと正確にコメントできない場合は、external_content_toolを使って内容を確認してからコメントしてください。
GitHubのPR、ファイル、ディレクトリ、rawファイルへのURLが含まれる場合は、コードや差分を確認してからコメントしてください。
URL先やコード、画像を確認すれば分かる内容を、日報を書いたユーザーに質問しないでください。
external_content_toolでURL先を取得できない、CodePenやリンク先が見えない、ログインや権限などの理由で内容を確認できない場合は、日報を書いたユーザーに「見られる状態にしてください」「内容を教えてください」と質問しないでください。
その場合は、bodyに `@mentor` を含めて、メンターにリンク先の確認と対応引き継ぎを依頼する短いコメントを書いてください。
リンク先を確認できていない状態で、内容を推測してコメントしないでください。
2 changes: 2 additions & 0 deletions app/tools/external_content.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# frozen_string_literal: true

module ExternalContent
UNREADABLE_URL_MESSAGE = 'リンク先を確認できませんでした。提出者に聞かず、@mentor にリンク先の確認と対応引き継ぎを依頼してください。'

def self.fetch(url)
uri = URI.parse(url.to_s)
return 'httpまたはhttpsのURLだけ取得できます。' unless uri.is_a?(URI::HTTP)
Expand Down
Loading
Loading