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

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

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

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

Q&A

解決済

1回答

336閲覧

Ruby の相対パスについて

nukonuko_tk

総合スコア17

Ruby

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

2グッド

2クリップ

投稿2020/03/12 08:24

/app
|- main.rb
|- controller.rb
|- /modules
| |- pass.txt
| |- pass_read.rb
|- /lib
|- c.rb
|- d.rb# <- 実行ファイル

例えばpass.txtにパスワードが記入されているとします。
それを読み込むだけのメソッドpass_read.rbを設置します。
中は適当に

def pass_read File.("./pass.txt").read end

だったとします。
次にd.rbから

reuquire_relative '../modules/pass_read'

を実行すると、エラーになります。
カレントディレクトリが/app/lib であるため、pass_read内の ./ が現在のカレントディレクトリを参照しているためと思われます。
どうしたら、pass_read.rbをd.rbから正常に作動することができるでしょうか?
記述法のアドバイスがあればお願いいたします。

DrqYuto, s.k👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーというのは、#pass_read を実行すると、「フィアルがない」みたいなエラーが出るということでしょうか?
もしそうなら、#pass_read を、以下のように修正すれば、良いかと思います。

ruby

1def pass_read 2 File.read(File.join(__dir__, 'pass.txt')) 3end

__dir__ で、ソースファイル(今回の場合は 'pass_read.rb') があるディレクトリ名を取得することが出来ます。
https://docs.ruby-lang.org/ja/latest/method/Kernel/m/dir.html

投稿2020/03/12 09:43

taichi730

総合スコア318

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

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

taichi730

2020/03/12 13:31

「エラーになります」と書いてありますが、それだけではどの様なエラーがかわからないのです。 なので、表示されたエラーメッセージも載せるようにしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問