プロジェクトディレクトリへの相対パス
概要
私の Ruby プロジェクトでは、いくつかのリモート ボックス上でファイルを移動したり編集したりするなど、めちゃくちゃなことを使用しているので、ルート プロジェクト ディレクトリへの相対パスのようなものが本当に必要です。多くのメソッドで使用される処理フォルダーが多数あります。
現在、パスをハードコーディングしていますが、それは私を不幸にします。
解決策
これでカレントディレクトリ(現在のファイルのディレクトリ)を取得できます
File.dirname(__FILE__)
その後、ルートへの相対パスを使用して結合できます
File.join(File.dirname(__FILE__), '../../') # add proper number of ..
または、expand_path を使用して相対パスを絶対パスに変換することもできます。
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', File.dirname(__FILE__))
または、2 つのディレクトリ間の相対パスを計算することもできます。
require 'pathname'
puts Pathname.new('/').relative_path_from(Pathname.new('/some/child/dir/')).to_s
# => ../../..