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

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

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

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1352閲覧

Rails.rootのrequireに関して。

tkshp

総合スコア174

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2019/10/03 08:12

前提・実現したいこと

こちらのサイトを参考にしているのですが、
Rails.rootに関してわからないことがあるので質問させていただきます。

試したこと

FILEやFile.expand_pathは分からなかったので、調べてどこをrequireしているかはわかりました。

ruby

1# Rails.rootを使用するために必要 2require File.expand_path(File.dirname(__FILE__) + "/environment")

config/test.rbを下記のように作成し、rails runner .\config\test.rbを実行したら、
Rails.rootのパスが出力されました。

ruby

1# require File.expand_path~は書いていない。 2puts Rails.root

質問

・質問1。

ruby

1# Rails.rootを使用するために必要 2require File.expand_path(File.dirname(__FILE__) + "/environment")

は、config/environmentフォルダを参照しているかと思うのですが、これは書き間違いで、
正しくはconfig/environmentsフォルダを参照したいということでしょうか?
つまり、下記が正しい記述ということでしょうか?

ruby

1# Rails.rootを使用するために必要 2require File.expand_path(File.dirname(__FILE__) + "/environments")

・質問2。
require File.expand_path~を書いていないconfig/test.rbを
rails runner .\config\test.rbで実行したら、
puts Rails.rootでちゃんとルートパスが出力されたのですが、
config/schedule.rbで、requireを書く必要はあるのでしょうか?

・質問3。

ruby

1require File.expand_path(File.dirname(__FILE__) + "/environment(s?)")

の読み込む先のどの箇所でRails.rootを定義しているのでしょうか?
例えば、config\environments\development.rbの中のソースを「root」で検索してみても、

ruby

1if Rails.root.join('tmp', 'caching-dev.txt').exist?

のコードしか見つからず、これはRails.rootを定義しているようには見えませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

回答1
書き間違いでは無いです。config/environment.rb をとり込みます
ruby の require は拡張子が無いときはいくつかの拡張子をつけて(何だか忘れた)探します。.rb はその中の一つです

回答2、3
rails runner の rails は、 Rails.root/bin にある railsです。
ここには File.expand_path(色々, __FILE__)があります。
この先推定
これによって、bin/rails は自分がどこに居るかわかるので、そこからRails.rootを設定しているのではないかと。

気になるようでしたら、bin/rails が起動している諸々を順に辿ってみて下さい。

投稿2019/10/04 02:06

winterboum

総合スコア23345

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

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

tkshp

2019/10/04 15:57 編集

ご回答ありがとうございます。 config/environment.rbは読み込んでいるけど、config/environment.rbでRails.rootを設定しているわけではない、 つまり、config/environment.rbをrequireする必要はないという解釈で合っていますか? また、Railsアプリケーションを動かすときは、rails sやrails runnerなど、基本的にrailsで動かすので、何もrequireしなくても、Rails.rootは認識されるという理解で合っていますか?
tkshp

2019/10/07 00:57

ご回答ありがとうございます。 理解できました。 参考にしているサイトはrequireの部分は間違っていた(不要だった)のですね。
winterboum

2019/10/07 02:15

# Rails.rootを使用するために必要 require File.expand_path(File.dirname(__FILE__) + "/environment") ですか? コメントの正否はともかく、環境によるもろもろの設定が必要でしょうから、requireする必要があると思います。
tkshp

2019/10/07 02:51

必要ということで理解できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問