Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

admin column pro をアップデートした時にハマった話

ローカル環境でアップデートしたadmin column proを
検証環境に反映した際に動かなくて困った話

dockerのローカル環境では動くソースコードを検証環境へ反映
→検証環境で動かない
→「ACP_Filtering_Model」のクラスがないとエラーになる
→ソースコードを見ても「ACP_Filtering_Model」のクラスは存在する

Q.なぜ検証環境でエラーが出るのか
A.ディレクトリの表記名に間違いがあった

正:Filtering
誤:filtering

でも、そもそもなぜ
ローカル環境で動いて検証環境では動かないのか、
検証環境へは、gitコマンドを使ってソースコードを反映したのにも関わらず・・・

2点の問題

1点目は、
Mac OS Xでは、大文字小文字区別しないため、
ディレクトリの表記名が大文字であろうと小文字であろうと
読み込んでくれてしまう
そのため、mac上で動くdockerでは、
ディレクトリの表記名に間違いがあっても、
動いてしまっていた
検証環境では、Linuxを使っているため、
大文字小文字区別しているので、
動かなかった

2点目は、
gitの設定のデフォルトが、
大文字・小文字の変更は検知しない設定になっていて、
ディレクトリの表記名がリネームされていなかった

問題の解決

1点目の解決について、
Macのシステムボリュームを大文字、小文字を区別するフォーマットにする
→危険なのでやらない

2点目の解決について、
gitの設定を大文字・小文字の変更は検知するように設定

config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true

上記を見ると

ignorecase = true

になっている
これをfalseにしてあげることで、
大文字、小文字の変更を検知してくれる
書き換え方は、configを直接書き換えるも良し、
コマンドで書き換えるのも良し

コマンド

$ git config core.ignorecase false

確認用コマンド

$ git config -l --local | grep core.ignorecase

さいごに

gitの設定について、
ちゃんと理解していなかったことが今回の原因
けど、開発環境、本番環境は、できるだけ同じにしないと
不具合が出た時めんどくさいし、怖い

参考URL

Gitでファイル名の大文字・小文字の変更を検知するようにする

Docker for Mac に潜む罠? ファイル名の大文字・小文字の区別