サークルの新歓資料として一つ書いたのですが、新歓も終わったことですし晒しちゃいます(だが未完成である)
Rubyの環境構築については結構詳しく書いたつもりなので、環境構築ガイドにでも使ってください…
最終的にマルコフ連鎖を用いてツイートを学習しながら自動でつぶやくところまで仕上げたいです(願望)
よくあります。
99.9%がモデルの変更に伴うマイグレーション忘れです。
作業を開始する前、pullしてきた直後、必ず以下のコマンドを実行しましょう。
$ rails db:migrate
docker-composeを使ってる場合のメモ。
$ docker-compose run web rails db:migrate
docker-compose
で、db
とweb
の切り分け運用している方は多いらしい。(僕は長いことvagrant
だったのでよくわかりません)
友人のプロジェクトを手伝っているときに、docker-compose up
でweb
が立ち上がらないことがあったのでメモ。
docker-compose up
とすると、A server is already running.
というエラーが発生し、web
コンテナが正常に起動してくれない。
これは、何かしらの要因によって、前回のプロセスが正常に終了しなかった場合に発生すると考えられます。
docker-compose
は、実行プロセスのPIDを<project_dir>/tmp/pids/server.pid
に書き込み、終了時に削除するという方法をとっています。
docker-compose
は、コンテナを立ち上げる際、まずこのファイルを見に行った上で、実行中のプロセスを確認します。
そのため、何かしらの要因でこのserver.pid
が削除されず残ってしまった場合、docker-compose
はこれを実行中とみなしてしまいます。
諸悪の根源であるserver.pid
を葬り去りましょう。
$ rm <project_dir>/tmp/pids/server.pid
PIDがわかる場合は、server.pidの中で該当するPIDを削除するだけで大丈夫です。
この問題、よくあるみたいなのでメモ。
mysql.sockについてですが、まれに自動で作成されない場合があるそうです。そのため、dbコンテナ上であらかじめ手動で作成してから再度試してみましょう。
$ sudo touch /var/lib/mysql/mysql.sock $ sudo chown mysql:mysql /var/lib/mysql/mysql.sock
そもそもソケットいらない?
docker-composeを用いてweb用とdb用のコンテナをそれぞれ分けて運用している場合、config/database.yml
のhost
にdb
とコンテナを明示する必要があります。(当たり前かもしれない…)
default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: password host: db development: <<: *default database: myapp_development test: <<: *default database: myapp_test
passwordの空欄を許可している場合は、passwordの値は空欄で構いません。