必要なもの
Docker Desktop
Visual Studio Code
今回の作業環境は以下になります。
Docker ファイルを作成
Dockerfile
FROM ruby
RUN apt-get update -qq
WORKDIR /app
COPY Gemfile* /app/
RUN bundle install
COPY . /app
EXPOSE 3000 1234 26162
CMD ["rails", "server", "-b", "0.0.0.0"]
Gemfile ファイルを作成
Gemfile
source 'https://rubygems.org'
gem 'rails', '~>6'
Docker 内を Visual Studio Code で開く
.devcontainer/devcontainer.json に下記の行を追加しvscodeを開きなおす
devcontainer.json
"extensions": [
"rebornix.ruby",
"wingrunr21.vscode-ruby"
],
"workspaceFolder": "/app",
"workspaceMount": "source=${localWorkspaceFolder},target=/app,type=bind,consistency=delegated"
バージョン確認
TERMINAL
# ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]
# rails -v
Rails 6.1.4.1
Railsプロジェクト作成
TERMINAL
rails new --api --minimal -S -J -T .
動作確認
TERMINAL
rails s
ブラウザで http://localhost:3000 を開く
デバッグ用 gem 追加しbundle install
Gemfile
group :development do
gem 'listen', '~> 3.3'
gem 'debase', '0.2.5.beta2'
gem 'ruby-debug-ide', '~> 0.7.2'
end
デバッグ用ファイルを作成
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Rails server",
"type": "Ruby",
"request": "attach",
"cwd": "${workspaceRoot}",
"remoteWorkspaceRoot": "/app",
"remoteHost": "0.0.0.0",
"remotePort": "1234"
}
]
}
デバッグ起動
TERMINAL
bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -p 3000 -b 0.0.0.0
テスト用コントローラ作成
app/controllers/todos_controller.rb
class TodosController < ApplicationController
def index
todos = ['歯磨き', '掃除']
render json: todos
end
end
config/routes.rb
Rails.application.routes.draw do
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
resources :todos
end
ブレークポイント設定
ブレークポイントで止めて変数を確認
ブラウザで http://localhost:3000/todos を開く