読者です 読者をやめる 読者になる 読者になる

sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

ポリモーフィック関連でのフィクスチャの定義

class Player < ActiveRecord::Base
  belongs_to :playable, :polymorphic => true
end

class Video < ActiveRecord::Base
  has_many :players, :as => :playable
end

のようなポリモーフィック関連を定義しているとき、 fixtureには、以下のようにかけばよい。

# Video fixtures
video1:
  name: name1
# Player fixtures
player1:
  name: player1
  playable: video1 (Video)

いちいちFixtureのAPIを使って名前でidを検索して設定しなくてもOK。

DockerホストのディレクトリをマウントしたコンテナでApacheが書き込みに失敗するときの対応

qiita.com

と同じ症状で悩んでいたが、Mac OS Xのdockerだと、マウントした側のコンテナではファイルの所有者が 1000:1000ではなく、1000:staffになっていたので、

RUN usermod -u 1000 www-data \
    && groupmod -g 1000 www-data

ではなく、

RUN usermod -u 1000 www-data \
    && usermod -G  staff,www-data www-data

のようにして、www-dataのユーザーIDを1000にし、www-dataをstaffグループとwww-dataグループの両方に追加することで、コンテナ側からもホストのディレクトリに無理やり書き込めるようにした。

pyenvのインストール

久々にPythonの環境をちゃんと作ろうと思い、自分用のメモ。

rbenvと同じような使い方をしたいので、公式サイトの手順に従ってhomebrewでpyenvをインストール。 GitHub - yyuu/pyenv: Simple Python version management

$ brew update
$ brew install pyenv

brewでpyenvをインストールしたときのメッセージにしたがって、.bash_profileに以下を追加する。

if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

brewでインストールしたときのメッセージを再表示したいときは、以下を実行

$ brew info pyenv

python 3でPyramidが動作するバージョンでも入れてみる。

$ pyenv install 3.2.3

稼働中のDockerコンテナにターミナル接続をする

稼働中のコンテナ上でコマンドを実行するためにdocker execを使う。

その上で-itオプションを指定し、/bin/bashを使う。

exec コマンドの書式は以下の通り。

$ docker exec (option) (コンテナ名) (コマンド)

実際に使うコマンドは以下のような感じ。-iはinteractiveで、-tはttyの略。

$ docker exec -it my_container /bin/bash