💎
VSCode Remote Container で最新の Ruby on Rails 環境を構築して Heroku にデプロイする
WSL2 内でディレクトリを作成して VSCode で開く。
$ mkdir myapp
$ cd myapp
$ code .
Remote-Container として開きなおす。Ctl+Shift+P でコマンドパレットを開いて以下を実行。
>Remote-Containers: Reopen in Container
各種環境を選択できるが、rails とでも入力して以下を選択する。
Ruby on Rails & Postgres
2022/05/13時点での ruby, Rails のバージョンは以下となっている。
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
$ rails -v
Rails 7.0.3
Rails アプリを作成
$ rails new .
このままでは Root ページがないため、scaffold で単純な Todo リストを作成して表示する。
$ rails g scaffold todo content:text
config/routes.rb
に以下を追記。
config/routes.rb
root "todos#index"
利用するデータベースを sqlite3 から postgresql に変更する。
Gemfile
@@ -12,2 +12,2 @@ gem "sprockets-rails"
-# Use sqlite3 as the database for Active Record
-gem "sqlite3", "~> 1.4"
+# Use postgresql as the database for Active Record
+gem "pg"
gem をインストール
$ bundle install
.devcontainer/devcontainer.json
に記載されている database 名や username を config/database.yml
と合わせるため、 adapter を postgresql にし、各環境の database, username, host を変更する。
config/database.yml
default: &default
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: app_development
username: vscode
host: localhost
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: app_test
username: vscode
host: localhost
production:
<<: *default
ローカルの database を作成して migrate する。
$ rails db:create
$ rails db:migrate
ローカルで起動してCRUD操作ができることを確認する。
$ rails s
Heroku CLI のインストールからプッシュまでを行う。
詳細は Heroku スターターガイド (Rails 7.x) に記載されている。
Heroku CLI のインストール
$ curl https://cli-assets.heroku.com/install.sh | sh
Heroku へのログインとアプリの作成
$ heroku login #何らかのキーを押すとブラウザが開くのでログインする
$ heroku create
Git で commit と push し、DB を migrate する。
$ git add .
$ git commit -m "init"
$ git push heroku main
$ heroku run rake db:migrate
$ heroku open
ブラウザが開くので Heroku 上で Todo の作成ができればOK。
Discussion