がべーじこれくしょん

技術系とかいろいろ

RubyによるTwitterBot作成入門資料を書いた

サークルの新歓資料として一つ書いたのですが、新歓も終わったことですし晒しちゃいます(だが未完成である)

Rubyの環境構築については結構詳しく書いたつもりなので、環境構築ガイドにでも使ってください…

hackmd.io

最終的にマルコフ連鎖を用いてツイートを学習しながら自動でつぶやくところまで仕上げたいです(願望)

ActiveRecord::PendingMigrationError の倒し方

よくあります。

99.9%がモデルの変更に伴うマイグレーション忘れです。

作業を開始する前、pullしてきた直後、必ず以下のコマンドを実行しましょう。

$ rails db:migrate

docker-composeを使ってる場合のメモ。

$ docker-compose run web rails db:migrate

Rails with docker-composeで"A server is already running."と出る問題

docker-composeで、dbwebの切り分け運用している方は多いらしい。(僕は長いことvagrantだったのでよくわかりません)

友人のプロジェクトを手伝っているときに、docker-compose upwebが立ち上がらないことがあったのでメモ。

問題の概要

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を削除するだけで大丈夫です。

Rails with docker-composeで'/tmp/mysql.sock'がねえよと怒られたとき

この問題、よくあるみたいなのでメモ。

1. mysql.sockがあるかどうか疑う

mysql.sockについてですが、まれに自動で作成されない場合があるそうです。そのため、dbコンテナ上であらかじめ手動で作成してから再度試してみましょう。

$ sudo touch /var/lib/mysql/mysql.sock
$ sudo chown mysql:mysql /var/lib/mysql/mysql.sock

2. config/database.ymlの設定を疑う

そもそもソケットいらない?

docker-composeを用いてweb用とdb用のコンテナをそれぞれ分けて運用している場合、config/database.ymlhostdbとコンテナを明示する必要があります。(当たり前かもしれない…)

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の値は空欄で構いません。

Macで使えるフリー回路図エディタ「Qt-BSch3V」を使ってみた

私の通っている学校の講義のなかで「実験」というものがありまして,それがまた厄介なんですよね(?)

そんな話はさておいて,今回は回路図をMacで書こうと思います.(というのも実験のレポートで回路図を用意する必要性が生じたからなのですが…)

いろいろ探した結果,「Qt-BSch3V」というものがよさそうなので使ってみます.

もともと,Win用の回路図エディタとして「BSch」というものがあるらしく,それのMac移植版ということらしいです.

続きを読む