ブログ

読んで思い出す。忘れるために書く

相対パス指定とコードの移植性について

環境の違いで動かなくなることがある、ので その対処

まとめ

\ とか / とか、OS によってディレクトリ区切りの表現が違うので、それをパス指定で使わない方法を採ろう

でも WindowsRuby って動かさないとは思うけど

コード

# 実行されるファイルのフルパスを表示
p File.expand_path(__FILE__)

# 実行されるファイルのディレクトリをフルパスで表示
p __dir__


# OS 固有のディレクトリ区切り文字を使ってて他のOS で実行できない
# require "#{__dir__}/lib/foo"

# OS 固有の区切り文字に囚われずに相対パスを指定できる
require File.join(__dir__, 'lib', 'foo')

Links