Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
1dff3ce
コメントとQ&Aの回答について、不要な余白を表示しないようにした
kutimiti1234 Sep 4, 2025
372e314
コメントの編集・削除権限を本人・メンター・管理者に変更した
kutimiti1234 Nov 2, 2025
4b62df7
コメント編集・削除のメンター権限をコントローラーとテストに反映
machida Nov 5, 2025
79c82ec
本番と同様に例外がrescueされる前提でテストを修正
kutimiti1234 Dec 21, 2025
d6fa172
_answer.html.slimの条件分岐を_comment.html.slimに合わせて修正
machida Dec 23, 2025
2b5d9b8
回答の権限をコメントと合わせ、管理者・メンター両方が削除、ベストアンサー選択ができるようにした。
machida Dec 23, 2025
78c835b
_answer.html.slimの変数名を修正(comment -> answer)
machida Dec 23, 2025
2f989f0
企業ロゴ表示をadviser?のみに統一
machida Dec 23, 2025
c095f18
Prettier実行時のglob展開が環境に依存しないようにする
ryufuta Jan 2, 2026
d015953
Rails 8.1.1 アップグレード
komagata Jan 6, 2026
4b5164e
Zeitwerk規約に合わせてAI関連クラス名をAi形式に変更
komagata Jan 6, 2026
4d0206c
Gemfile更新: セキュリティ対応と依存関係の安定化
komagata Jan 6, 2026
afdcbf3
CI/CloudBuild設定の更新
komagata Jan 6, 2026
b23c8c0
テスト修正: Rails 8.1.1対応とフレーキネス解消
komagata Jan 6, 2026
da1149f
Rails 8.1.1互換性のためのコード修正
komagata Jan 6, 2026
37a8ead
bin/setupにJavaScript依存関係のインストールステップを追加
komagata Jan 7, 2026
90a58ba
テスト修正: assert_textをassert_differenceブロックの外に移動
komagata Jan 7, 2026
9b1a57d
テスト修正: 手動カウントチェックを削除して一貫性を確保
komagata Jan 7, 2026
3692ee8
テスト修正: フォーム送信のセレクタを統一
komagata Jan 7, 2026
45dd5ee
yarnを廃止してnpmに移行
komagata Jan 7, 2026
25b1feb
サーバー起動スクリプトなどが変わった点を修正
komagata Jan 7, 2026
0af570b
good_jobをsolid_queueに移行
komagata Jan 7, 2026
7ab6755
solid_queue用のマイグレーションを追加
komagata Jan 7, 2026
cd73f02
サーバー起動スクリプトなどが変わった点を修正
komagata Jan 7, 2026
a5ce5df
Gemfileのgem順序を修正
komagata Jan 9, 2026
741232e
tracerouteでmission_controlを除外
komagata Jan 9, 2026
301d0bd
CIでdb:setupをdb:prepareに変更
komagata Jan 9, 2026
8532e1d
マイグレーションを冪等に修正
komagata Jan 9, 2026
beb5efa
テスト修正: has_css?をassert_selectorに変更
komagata Jan 9, 2026
8742b77
テスト修正: CSSセレクタに.を追加
komagata Jan 9, 2026
eae4f18
テスト修正: TranscodeJobテストにアサーション追加
komagata Jan 9, 2026
f1e0021
テスト修正: transcoder無効時のテストにアサーション追加
komagata Jan 9, 2026
36a0ada
テスト修正: WIPテストのアサーションを改善
komagata Jan 9, 2026
2f8df3a
rubocop: Minitest/AssertIncludesを無効化
komagata Jan 9, 2026
297ee61
テスト修正: assert_selectorでCSSセレクタを使用
komagata Jan 9, 2026
a14d883
テスト修正: prevent_double_submitにアサーション追加
komagata Jan 9, 2026
dc7173d
テスト修正: メール拒否テストにアサーション追加
komagata Jan 9, 2026
b2d7a7c
Merge pull request #9484 from fjordllc/chore/solid_queue
komagata Jan 9, 2026
2cfb702
Merge pull request #9375 from fjordllc/chore/rails-8.1.1
komagata Jan 9, 2026
3fe85dd
Dockerfileをyarnからnpmに移行
komagata Jan 9, 2026
b947613
Merge pull request #9499 from fjordllc/fix/dockerfile-yarn-to-npm
komagata Jan 9, 2026
accb14f
ShakapackerのNode modules bin pathを設定
komagata Jan 9, 2026
d88ab6a
Merge pull request #9500 from fjordllc/fix/shakapacker-npm
komagata Jan 9, 2026
a49cb1d
bin/lintをyarnからnpmに変更
komagata Jan 10, 2026
12b9167
Gemfileのwindows platformの表記が変わったのに対応
komagata Jan 10, 2026
02658b7
CI: SHAKAPACKER_NODE_MODULES_BIN_PATHを設定
komagata Jan 10, 2026
a029dee
shakapacker: webpack_loaderをjavascript_transpilerに変更
komagata Jan 10, 2026
cb09a72
テスト修正: learnings fixtureの日付を明確に
komagata Jan 10, 2026
c3f4a62
shakapackerのバージョンをgem/npm間で統一
komagata Jan 10, 2026
38114fe
shakapackerをv9.5.0にアップグレード
komagata Jan 10, 2026
b84e67f
Merge pull request #9502 from fjordllc/fix/bin-lint-npm
komagata Jan 10, 2026
5816fd2
commentsテーブルのuser_idのインデックスが重複していたので片方を削除
ryufuta Jan 7, 2026
e5fad6e
Merge pull request #9470 from fjordllc/chore/fix-inconsistent-glob-ex…
komagata Jan 13, 2026
6a7f86c
Merge pull request #9149 from fjordllc/bug/comment-extra-space
komagata Jan 13, 2026
5a79f4f
Merge pull request #9487 from fjordllc/chore/remove-duplicate-comment…
komagata Jan 13, 2026
d63bd16
お知らせ通知の順序を変更: サイト内通知を先に実行
komagata Jan 14, 2026
d7318f9
Merge pull request #9512 from fjordllc/fix/announcement-notification-…
komagata Jan 14, 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
25 changes: 13 additions & 12 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ jobs:
bundle lock --add-platform ruby
- ruby/install-deps
- node/install:
install-yarn: true
install-yarn: false
node-version: '22.19.0'
- node/install-packages:
pkg-manager: yarn
pkg-manager: npm
check:
docker:
- image: 'cimg/ruby:3.4.3-node'
Expand All @@ -40,19 +40,19 @@ jobs:
name: Update package list
command: sudo apt-get update
- run:
name: Install libvips
command: sudo apt-get install -y libvips
name: Install libvips and libheif
command: sudo apt-get install -y libvips libheif-dev
- run:
name: Traceroute
command: FAIL_ON_ERROR=1 bundle exec rake traceroute
- node/install:
install-yarn: true
install-yarn: false
node-version: '22.19.0'
- node/install-packages:
pkg-manager: yarn
pkg-manager: npm
- run:
name: Lint
command: bin/yarn lint
command: npm run lint
test:
docker:
- image: cimg/ruby:3.4.3-browsers
Expand All @@ -71,6 +71,7 @@ jobs:
RAILS_ENV: test
DATABASE_URL: 'postgres://postgres:postgres@localhost/ci_test'
TZ: Asia/Tokyo
SHAKAPACKER_NODE_MODULES_BIN_PATH: ./node_modules/.bin
parallelism: 8
steps:
- checkout
Expand All @@ -87,22 +88,22 @@ jobs:
- ruby/install-deps:
clean-bundle: true
- node/install:
install-yarn: true
install-yarn: false
node-version: '22.19.0'
- node/install-packages:
pkg-manager: yarn
pkg-manager: npm
- run:
name: Install japanese font
command: sudo apt-get install -y fonts-noto-cjk
- run:
name: Install libvips
command: sudo apt-get install -y libvips
name: Install libvips and libheif
command: sudo apt-get install -y libvips libheif-dev
- run:
name: Wait for DB
command: 'dockerize -wait tcp://localhost:5432 -timeout 1m'
- run:
name: Database setup
command: 'bundle exec rails db:setup'
command: 'bundle exec rails db:prepare'
- run:
name: Assets precompile
command: 'bundle exec rails assets:clean assets:precompile'
Expand Down
8 changes: 4 additions & 4 deletions .cloudbuild/cloudbuild-staging.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ steps:
- '-c'
- |
set -euo pipefail
MAX_RETRIES=5
RETRY_DELAY=5
MAX_RETRIES=12
RETRY_DELAY=10

for i in $$(seq 1 $$MAX_RETRIES); do
echo "Attempt $$i/$$MAX_RETRIES: Deleting database bootcamp_staging..."
Expand Down Expand Up @@ -235,8 +235,8 @@ steps:
- '--set-env-vars=DISCORD_GUILD_ID=$_DISCORD_GUILD_ID'
- '--set-env-vars=DISCORD_TIMES_CHANNEL_CATEGORY_ID=$_DISCORD_TIMES_CHANNEL_CATEGORY_ID'
- '--set-env-vars=DISCORD_BOT_TOKEN=$_DISCORD_BOT_TOKEN'
- '--set-env-vars=GOOD_JOB_USERNAME=$_GOOD_JOB_USERNAME'
- '--set-env-vars=GOOD_JOB_PASSWORD=$_GOOD_JOB_PASSWORD'
- '--set-env-vars=MISSION_CONTROL_USERNAME=$_MISSION_CONTROL_USERNAME'
- '--set-env-vars=MISSION_CONTROL_PASSWORD=$_MISSION_CONTROL_PASSWORD'
- '--set-env-vars=STRIPE_ENDPOINT_SECRET=$_STRIPE_ENDPOINT_SECRET'
- '--set-env-vars=BASIC_AUTH_USER=$_BASIC_AUTH_USER'
- '--set-env-vars=BASIC_AUTH_PASSWORD=$_BASIC_AUTH_PASSWORD'
Expand Down
4 changes: 2 additions & 2 deletions .cloudbuild/cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ steps:
- '--set-env-vars=DISCORD_GUILD_ID=$_DISCORD_GUILD_ID'
- '--set-env-vars=DISCORD_TIMES_CHANNEL_CATEGORY_ID=$_DISCORD_TIMES_CHANNEL_CATEGORY_ID'
- '--set-env-vars=DISCORD_BOT_TOKEN=$_DISCORD_BOT_TOKEN'
- '--set-env-vars=GOOD_JOB_USERNAME=$_GOOD_JOB_USERNAME'
- '--set-env-vars=GOOD_JOB_PASSWORD=$_GOOD_JOB_PASSWORD'
- '--set-env-vars=MISSION_CONTROL_USERNAME=$_MISSION_CONTROL_USERNAME'
- '--set-env-vars=MISSION_CONTROL_PASSWORD=$_MISSION_CONTROL_PASSWORD'
- '--set-env-vars=STRIPE_ENDPOINT_SECRET=$_STRIPE_ENDPOINT_SECRET'
- '--set-env-vars=BASIC_AUTH_USER=$_BASIC_AUTH_USER'
- '--set-env-vars=BASIC_AUTH_PASSWORD=$_BASIC_AUTH_PASSWORD'
Expand Down
2 changes: 2 additions & 0 deletions .traceroute.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ ignore_unused_routes:
- active_storage\/.*
- jobs/mass_update
- doorkeeper/authorizations#show
- mission_control\/.*
ignore_unreachable_actions:
- rails\/.*
- active_storage\/.*
- mission_control\/.*
- .*#admin_login\?
- .*#mentor_login\?
- .*#admin_or_mentor_login\?
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
- `bin/` helper scripts; `Procfile.dev` runs Rails and asset dev server.

## Build, Test, and Development Commands
- Setup: `bin/setup` — install gems, prepare DB, yarn, etc.
- Setup: `bin/setup` — install gems, prepare DB, npm, etc.
- Run (dev): `foreman start -f Procfile.dev` — Rails on `:3000` + Shakapacker.
- Tests (headless): `rails test:all`.
- Tests (browser): `HEADFUL=1 rails test:all`.
Expand All @@ -19,7 +19,7 @@
## Coding Style & Naming Conventions
- Ruby: 2-space indent, snake_case methods, CamelCase classes; enforced by RuboCop (`.rubocop.yml`).
- Views: Slim templates, linted by `config/slim_lint.yml`.
- JS/TS: Code in `app/javascript/`; ESLint + Prettier via `yarn lint` scripts; React 17 and Shakapacker/Webpack 5.
- JS/TS: Code in `app/javascript/`; ESLint + Prettier via `npm run lint` scripts; React 18 and Shakapacker/Webpack 5.
- Files follow Rails conventions (e.g., `app/models/user.rb`, test `test/models/user_test.rb`).

## Testing Guidelines
Expand Down
23 changes: 5 additions & 18 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,12 @@ RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
apt-get install -y --no-install-recommends nodejs && \
rm -rf /var/lib/apt/lists/*

# Install latest yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && \
apt-get install -y --no-install-recommends yarn && \
rm -rf /var/lib/apt/lists/*

# Set timezone
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# Install ALL npm packages (including devDependencies for asset compilation)
COPY package.json yarn.lock ./
RUN yarn install --ignore-engines
COPY package.json package-lock.json ./
RUN npm install

# Install gems
COPY Gemfile Gemfile.lock ./
Expand All @@ -52,6 +45,7 @@ COPY . ./

# Compile assets (now with devDependencies available)
ENV RAILS_LOG_TO_STDOUT true
ENV SHAKAPACKER_NODE_MODULES_BIN_PATH ./node_modules/.bin
RUN SECRET_KEY_BASE=dummy bundle exec rails assets:precompile

# Production stage - minimal runtime image
Expand Down Expand Up @@ -88,20 +82,13 @@ RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
apt-get install -y --no-install-recommends nodejs && \
rm -rf /var/lib/apt/lists/*

# Install yarn for runtime
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && \
apt-get install -y --no-install-recommends yarn && \
rm -rf /var/lib/apt/lists/*

# Copy gems configuration
COPY Gemfile Gemfile.lock ./
RUN bundle install -j4

# Install only production npm packages
COPY package.json yarn.lock ./
RUN yarn install --prod --ignore-engines
COPY package.json package-lock.json ./
RUN npm install --omit=dev

# Copy application code from builder (excluding large directories)
COPY --from=builder /app/app ./app
Expand Down
50 changes: 25 additions & 25 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '3.4.3'

gem 'bootsnap', '>= 1.4.4', require: false
gem 'bootsnap', require: false
gem 'ffi', '1.17.1'
gem 'image_processing', '~> 1.12'
gem 'jbuilder', '~> 2.7'
gem 'puma', '~> 6.0'
gem 'rails', '7.2.2.2'
gem 'shakapacker', '~> 7.0'
gem 'image_processing', '>= 1.12.2', '< 2.0'
gem 'jbuilder'
gem 'puma', '>= 5.0'
gem 'rails', '8.1.1'
gem 'shakapacker', '~> 9.0'
gem 'sprockets-rails', '>= 2.0.0'

# not default
Expand All @@ -34,7 +34,6 @@ gem 'diffy'
gem 'discord-notifier'
gem 'discordrb', '~> 3.5', require: false
gem 'doorkeeper'
gem 'good_job', '~> 4.5'
gem 'google-cloud-storage', '~> 1.25', require: false
gem 'google-cloud-video-transcoder'
gem 'google-id-token'
Expand All @@ -49,6 +48,7 @@ gem 'kramdown-parser-gfm'
gem 'mentionable', '~> 0.3.0'
gem 'meta-tags'
gem 'mini_magick'
gem 'mission_control-jobs'
gem 'mutex_m', '0.1.1'
gem 'net-imap', require: false
gem 'net-pop', require: false
Expand All @@ -67,10 +67,12 @@ gem 'postmark-rails'
gem 'rack-cors', require: 'rack/cors'
gem 'rack-user_agent'
gem 'rails_autolink'
gem 'rails-i18n', '~> 7.0.0'
gem 'rails-i18n'
gem 'rails-patterns', '~> 0.2'
gem 'ransack', '~> 4.3'
gem 'react-rails'
gem 'solid_queue'
# TODO: connection_pool互換性が修正された安定版リリース後にgem版に戻す
gem 'react-rails', github: 'reactjs/react-rails', ref: '224d03b8e04b95e4d16197fc6ecf75601543154a'
gem 'recaptcha', '~> 5.12'
gem 'rollbar'
gem 'rss'
Expand All @@ -87,40 +89,38 @@ gem 'tzinfo', '~> 2.0', '>= 2.0.6'
gem 'view_component'

group :development, :test do
gem 'byebug', platforms: %i[mri mingw x64_mingw]

# not default
gem 'benchmark', require: false
gem 'byebug', platforms: :windows
gem 'dotenv-rails'
gem 'pry-byebug'
gem 'rubocop', require: false
gem 'rubocop-capybara', require: false
gem 'rubocop-fjord', '~> 0.4.0', require: false
gem 'rubocop-minitest', require: false
gem 'rubocop-performance', require: false
gem 'rubocop-rails', require: false
gem 'slim_lint'
gem 'traceroute'
end

group :development do
gem 'listen', '~> 3.3'
gem 'web-console', '>= 4.1.0'

# not default
gem 'bullet'
gem 'foreman'
gem 'letter_opener_web', '~> 2.0'
gem 'listen', '~> 3.3'
gem 'rack-dev-mark'
gem 'rack-mini-profiler', '~> 2.0', require: false
gem 'rubocop', require: false
gem 'rubocop-capybara', require: false
gem 'rubocop-fjord', '~> 0.4.0', require: false
gem 'rubocop-minitest', require: false
gem 'rubocop-performance', require: false
gem 'rubocop-rails', require: false
gem 'slim_lint'
gem 'view_source_map'
gem 'web-console'
end

group :test do
gem 'capybara', '>= 3.26'
gem 'capybara'
gem 'minitest', '< 6.0'
gem 'minitest-ci'
gem 'minitest-retry'
gem 'minitest-stub_any_instance'
gem 'selenium-webdriver', '~> 4.17.0'
gem 'selenium-webdriver'
gem 'vcr'
gem 'webmock'
end
Loading