QA@IT
«質問へ戻る

s/ruby/Ruby/ してタグを追加してみました

1138
タイトル
rubyのrequireで相対的にパスを指定する方法
Rubyのrequireで相対的にパスを指定する方法
本文
-現在、rubyで自作クラスを読み込もうと相対パスを指定してrequireで読み込んでいるのですが、「cannot load such file 」になってしまいます。
+現在、Rubyで自作クラスを読み込もうと相対パスを指定してrequireで読み込んでいるのですが、「cannot load such file 」になってしまいます。
 
 具体的にソースで説明させていただきます。
 まず前提として
-rootfolder/db/main.rb
-rootfolder/app/hoge.rb
+
+- rootfolder/db/main.rb
+- rootfolder/app/hoge.rb
+
 という2つのファイルがあり、rootfolderから
 
 ```
タグ

Rubyのrequireで相対的にパスを指定する方法

現在、Rubyで自作クラスを読み込もうと相対パスを指定してrequireで読み込んでいるのですが、「cannot load such file 」になってしまいます。

具体的にソースで説明させていただきます。
まず前提として

  • rootfolder/db/main.rb
  • rootfolder/app/hoge.rb

という2つのファイルがあり、rootfolderから

ruby ./db/main.rb 

というコマンドを実行しているものとします。

main.rbのソースは以下の通りです。

require File.dirname(__FILE__) + '/../app/hoge.rb'

この結果

cannot load such file -- db/../app/hoge.rb (LoadError)

となってしまいます。

どうもFile.dirname(FILE)で得たパスよりも上の階層にいこうとするとエラーになるようです(下の階層にあるクラスを指定した場合は読み込めた)。
最悪絶対パスをハードコーディング(/User/…)みたいな書き方をすれば読み込めるんでしょうけど、どうも拡張性が低いきがするので極力使いたくありません。
何かいい方法はないでしょうか?

現在、Rubyで自作クラスを読み込もうと相対パスを指定してrequireで読み込んでいるのですが、「cannot load such file 」になってしまいます。

具体的にソースで説明させていただきます。
まず前提として

- rootfolder/db/main.rb
- rootfolder/app/hoge.rb

という2つのファイルがあり、rootfolderから

```
ruby ./db/main.rb 
```
というコマンドを実行しているものとします。

main.rbのソースは以下の通りです。

```ruby
require File.dirname(__FILE__) + '/../app/hoge.rb'
```

この結果

```
cannot load such file -- db/../app/hoge.rb (LoadError)
```
となってしまいます。

どうもFile.dirname(__FILE__)で得たパスよりも上の階層にいこうとするとエラーになるようです(下の階層にあるクラスを指定した場合は読み込めた)。
最悪絶対パスをハードコーディング(/User/…)みたいな書き方をすれば読み込めるんでしょうけど、どうも拡張性が低いきがするので極力使いたくありません。
何かいい方法はないでしょうか?

質問を投稿

rubyのrequireで相対的にパスを指定する方法

現在、rubyで自作クラスを読み込もうと相対パスを指定してrequireで読み込んでいるのですが、「cannot load such file 」になってしまいます。

具体的にソースで説明させていただきます。
まず前提として
rootfolder/db/main.rb
rootfolder/app/hoge.rb
という2つのファイルがあり、rootfolderから

ruby ./db/main.rb 

というコマンドを実行しているものとします。

main.rbのソースは以下の通りです。

require File.dirname(__FILE__) + '/../app/hoge.rb'

この結果

cannot load such file -- db/../app/hoge.rb (LoadError)

となってしまいます。

どうもFile.dirname(FILE)で得たパスよりも上の階層にいこうとするとエラーになるようです(下の階層にあるクラスを指定した場合は読み込めた)。
最悪絶対パスをハードコーディング(/User/…)みたいな書き方をすれば読み込めるんでしょうけど、どうも拡張性が低いきがするので極力使いたくありません。
何かいい方法はないでしょうか?

現在、rubyで自作クラスを読み込もうと相対パスを指定してrequireで読み込んでいるのですが、「cannot load such file 」になってしまいます。

具体的にソースで説明させていただきます。
まず前提として
rootfolder/db/main.rb
rootfolder/app/hoge.rb
という2つのファイルがあり、rootfolderから

```
ruby ./db/main.rb 
```
というコマンドを実行しているものとします。

main.rbのソースは以下の通りです。

```ruby
require File.dirname(__FILE__) + '/../app/hoge.rb'
```

この結果

```
cannot load such file -- db/../app/hoge.rb (LoadError)
```
となってしまいます。

どうもFile.dirname(__FILE__)で得たパスよりも上の階層にいこうとするとエラーになるようです(下の階層にあるクラスを指定した場合は読み込めた)。
最悪絶対パスをハードコーディング(/User/…)みたいな書き方をすれば読み込めるんでしょうけど、どうも拡張性が低いきがするので極力使いたくありません。
何かいい方法はないでしょうか?