🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Q&A

解決済

3回答

1152閲覧

他のrubyファイルの読み込みやrequireに関して。

tkshp

総合スコア174

Ruby

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

0グッド

0クリップ

投稿2019/10/17 02:07

前提・実現したいこと

rubyでPHPのincludeのように、外部rubyファイルを読み込むことはできませんか?
また、requireについても教えていただきたいです。
ご教示お願いします。

試したこと

デスクトップに下記test.rbファイルを作成しました。

ruby

1value = "value1"

デスクトップに下記sample.rbファイルも作成しました。
sample.rbからtest.rbを読み込みたかったので、
下記コメントをそれぞれ試しました。

ruby

1# require 'test' 2# require './test' 3# require_relative 'test' 4 5puts value

require 'test'を試したときのエラーメッセージ。

C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- test (LoadError)

require './test'やrequire_relative 'test'を試したときのエラーメッセージ。

./sample.rb:6:in `<main>': undefined local variable or method `value' for main:Object (NameError)

エラーメッセージから、
require './test'やrequire_relative 'test'では、test.rbを読み込めているように思えました。

質問

・質問1
下記は同等という認識で合っていますか?

 require './test'  require_relative 'test'

・質問2。
下記は、どこのtest.rbを読み込もうとしているのでしょうか?

require 'test'

・質問3。
rubyでPHPのincludeのように、外部rubyファイルを読み込むことはできませんか?
できる場合、その方法はどのようにすればよいですか?

補足情報(FW/ツールのバージョンなど)

Windows 10
ruby 2.4.5p335

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

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

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

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

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

guest

回答3

0

回答1
違います。 test.rbが置かれているdirectoryで実行した時は同じですが、別のdirectoryで実行すると require './test' では取り込めません。
require './test' は実行directory からの相対、require_relative は実行ファイルの置き場からの相対です

回答2
rubyの$LOAD_PATHに登録されているdirectory達です

回答3
requireがまさにそれです。$LOAD_PATHに取り込みたいfileが置かれている場所を追加して下さい

投稿2019/10/17 02:14

winterboum

総合スコア23567

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

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

tkshp

2019/10/17 02:31

ご回答ありがとうございます。 回答1のrequireの違いのご説明ありがとうございます。 とても勉強になりました。 回答2のご説明もありがとうございました。
guest

0

・質問1への回答
同等という認識であっています。

・質問2への回答
これは標準ライブラリを読み込もうとしています。

・質問3への回答
PHPのincludeに近いものはRubyのrequireですが、ローカル変数はファイルを越えられないので、グローバル変数かインスタンス変数を使う必要があります。

投稿2019/10/17 02:27

ryuii

総合スコア438

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

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

tkshp

2019/10/17 02:32

ご回答ありがとうございます。 勉強になりました。
guest

0

ベストアンサー

rubyでPHPのincludeのように、外部rubyファイルを読み込むことはできませんか?

できますが、ローカル変数はファイル単位となってしまって、requireを書いたファイルから使うことはできません。

投稿2019/10/17 02:10

編集2019/10/17 02:10
maisumakun

総合スコア145975

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

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

tkshp

2019/10/17 02:30

ご回答ありがとうございます。 勉強になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問