質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

4回答

3097閲覧

Rubyを実行しているディレクトリをどのように判断すればいいでしょうか?

yoshida10

総合スコア14

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

2クリップ

投稿2018/09/11 05:52

プログラミング初心者です。
現在プロを目指す人のためのRuby入門という本で勉強しています。
その本の指示に沿って以下の階層構造でフォルダ、ファイルを作りました。

ruby-book/
|--lib/
| |--fizz_buzz.rb
|--test/
| |--fizz_buzz_test.rb
|

fizz_buzz_test.rbからfizz_buzz.rbを読み込めるようにするために
fizz_buzz_test.rbに「require './lib/fizz_buzz'」と書きました。
確かにfizz_buzz.rbを読み込むことができました。
しかし、何故「require './lib/fizz_buzz'」で読み込むことができたのかわかりません。

本の説明を以下に引用します。
「requireを使うとRubyを実行しているディレクトリがパスの起点となります。」
Rubyを実行しているディレクトリというのがよくわかりませんが、ruby-bookディレクトリが恐らくRubyを実行しているディレクトリなんだど思います。

以下質問
Rubyを実行しているディレクトリをどのように判断すればいいでしょうか?

ご教示いただけますと幸いです。
よろしくお願いいたします。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

「プロを目指す人のためのRuby入門」の著者です。
拙著のご購入どうもありがとうございます!

たしかにそう言われてみると「Rubyを実行しているディレクトリ、とは?」という疑問が浮かんでしまいそうな表現になっていますね。どうもすいません????

すでに解決済みなので回答が重複してしまいますが、本文の内容をもう少し丁寧に説明するなら、

Rubyを実行しているディレクトリ = rubyコマンドを実行した際のカレントディレクトリ

です。

Windowsのコマンドプロンプトであれば、CDコマンドを引数無しで実行するとカレントディレクトリが表示されるはずです(Mac/Linux環境であればpwdコマンドを使います)。
そのディレクトリが本書でいうところの「Rubyを実行しているディレクトリ」になります。

投稿2018/09/11 23:46

編集2018/09/12 00:11
jnchito

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshida10

2018/09/12 05:07

私は最近プログラミングの勉強を始めたばかりでコマンドプロンプト等の知識も浅いため混乱してしまいましたが、回答のおかげですっきり理解できました。 「プロを目指す人のためのRuby入門」の30%程読み進めましたが、すごくわかりやすいので楽しく勉強させていただいてます! それでは、わかりやすい回答ありがとうございました!
guest

0

require "./~~"を使うと、rubyコマンド実行時のカレントディレクトリが起点になるので、違うディレクトリをカレントディレクトリにして実行する事が出来ません。

require_relative "~"を使うと、これを書いたRubyスクリプトファイルのあるディレクトリを起点、つまり上記の例だと、ruby_boo/testを起点としたパスを指定するので、Rubyコマンド実行時のカレントディレクトリが何処であっても実行できます。

投稿2018/09/12 04:27

otn

総合スコア84507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshida10

2018/09/12 04:59

わかりやすい回答ありがとうございます!
otn

2018/09/12 09:22

> できます 同じファイルをあちこちに作ればそりゃ出来ますって。
asm

2018/09/12 09:50 編集

あぁ、ごめん 「違うディレクトリをカレントディレクトリにして(プログラムを)実行できません」 だったのね。解釈ミスりました。 ・・・コマンド実行時じゃないですよ?
guest

0

注意すべきことがあります。

「実行コマンドを叩いたディレクトリ」は、あくまでも「Rubyを実行しているディレクトリ」の初期値にすぎません。

Dir.chdirを実行する事で変更する事ができます。
p Dir.pwdで**「現在のRubyが実行されているディレクトリ」**が表示できます。

投稿2018/09/12 02:06

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshida10

2018/09/12 05:02

そうなのですね。わかりやすい回答ありがとうございます!
guest

0

ベストアンサー

どう実行しているのか,実行環境が不明+その本を所持していないので分からないのですが

ruby test/fizz_buzz_test.rb

みたいな実行コマンドを叩いているのであればカレントディレクトリがあなたの言う「Rubyを実行しているディレクトリ」です.

投稿2018/09/11 06:05

npkk

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshida10

2018/09/11 06:35

非常にわかりやすい回答ありがとうございます。 確かに、コマンドプロンプトの C:/Users/ユーザー名/Desktop/ruby_book からruby test/fizz_buzz_test.rbを実行したところ上手く実行できましたが、 C:/Users/ユーザー名/Desktop/ruby_book/test から ruby fizz_buzz_test.rb を実行したところ、require: cannnot load such file とエラーがでることが確認できました。 つまり、Rubyを実行しているディレクトリ=コマンドプロンプトでrubyコードを打った時のディレクトリ、もっと厳密に言うと C:/Users/ユーザー名/Desktop/ruby_book となっていたらruby_bookディレクトリだし、 C:/Users/ユーザー名/Desktop/ruby_book/testとなっていたら testディレクトリがRubyを実行しているディレクトリということですね。 もし、上記の解釈に間違いがあればご指摘いただければ幸いです。 わかりやすい回答ありがとうございます。
npkk

2018/09/11 08:14

その通りです.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問