Ruby on Jets チュートリアル(CRUDの作成)
Ruby on Jets デモプロジェクト作成後、 http://localhost:8888 に表示される手順に沿ってpostsのCRUDを作成する。
jets generate scaffold post title:string
jets db:create db:migrate
jets server
open http://localhost:8888/posts
jets help
MySQLコンテナの作成
MySQLを使用するためdocker-compose.ymlを修正する。
Ruby on Jetsのプロジェクトを作成した際に.env.developmentファイルが作成されるのでそれを読み込むようにする。
version: '3' services: app: build: context: . dockerfile: ./docker/ruby/Dockerfile volumes: - .:/app - bundle-data:/usr/local/bundle ports: - "8888:8888" depends_on: - db command: bundle exec jets server --port 8888 --host 0.0.0.0 db: image: mysql:5.7 ports: - "3306:3306" env_file: - .env.development volumes: bundle-data: driver: local
.env.developmentに以下を追加する。
MYSQL_RANDOM_ROOT_PASSWORD=yes MYSQL_DATABASE=jets_db MYSQL_USER=jets_user MYSQL_PASSWORD=jets_password DB_HOST=db # docker-composeで定義したサービス名
config/database.ymlを修正する(database, username, password)。
default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV["DB_POOL"] || 5 %> database: <%= ENV['MYSQL_DATABASE'] || 'app_development' %> username: <%= ENV['MYSQL_USER'] || 'root' %> password: <%= ENV['MYSQL_PASSWORD'] %> host: <%= ENV["DB_HOST"] %> url: <%= ENV['DATABASE_URL'] %> # takes higher precedence than other settings reconnect: true development: <<: *default database: <%= ENV['MYSQL_DATABASE'] || 'app_development' %> test: <<: *default database: app_test production: <<: *default database: app_production url: <%= ENV['DATABASE_URL'] %>
Jets generate and migrate
あとは一番上の手順を参考にコマンドを実行し、http://localhost:8888/posts にアクセスする。
docker-compose run --rm app bundle exec jets generate scaffold post title:string docker-compose run --rm app bundle exec jets db:migrate # MySQLコンテナ作成時にdatabaseも作成するため、db:createは不要 docker-compose up open http://localhost:8888/posts docker-compose exec app bundle exec jets help # コマンド一覧
以下の画面が表示される。