ダメでしょ!

プログラミングとか怒られた話とか…

require する際の指定文字列が大文字/小文字で挙動が変わる? → Macの大文字小文字区別の問題でした

ローカル環境で問題なく実行されたコードが別の環境でうまく動作しない

私の開発環境はMacなのですが、そこで以下のように記載したコードを作成しました。

require 'CSV'

自分のローカル環境での単体テストが問題なく終了したため、Linuxの実行環境で上記のコードを含んだアプリケーションを動作させようとしたのですが、

LoadError: cannot load such file -- CSV
from /usr/local/src/rbenv/versions/2.2.2/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'

となり、エラーが発生しました。

問題は、MacLinuxで大文字小文字の判断が異なること

MacWindows と同じく、ファイル名やフォルダ名の大文字個別を区別しません。(デフォルトの設定では)
Linux は大文字小文字を区別します。
その違いで発生していたエラーでした。

MacUnix ベースだから、という勘違い

MacUnix をベースにしている、という認識があって、そこから勝手にLinux と同じように動作するだろうと思いこんでいました。。

ということで

require 'csv'

に修正して問題は解決しました。