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

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

詳細はこちら
Ruby on Rails 5

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

Ruby on Rails

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

Q&A

解決済

1回答

1053閲覧

Railsの環境の設定に関して。

tkshp

総合スコア174

Ruby on Rails 5

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

Ruby on Rails

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

0グッド

2クリップ

投稿2019/09/30 03:14

編集2019/09/30 03:25

前提・実現したいこと

こちらのサイトを参考に、wheneverに関するコードを組んでいるのですが、
その中でRailsの環境に関する設定が分からないので質問させていただきます。

該当のソースコード

# cronを実行する環境変数 rails_env = ENV['RAILS_ENV'] || :development # cronを実行する環境変数をセット set :environment, rails_env

試したこと

Railsの環境を確認する方法がわからなかったので、調べて、下記コマンドで確認できることがわかりました。
Windowsローカル環境にて。

> rails console > Rails.env => "development"

質問

・質問1。
ENV['RAILS_ENV']とは何ですか?
試したことにあるように、rails consoleで、Rails.envで出力した結果とENV['RAILS_ENV']は同じですか?

・質問2。
参考サイトで、||の書き方をしていることが気になりました。

rails_env = ENV['RAILS_ENV'] || :development

 ENV['RAILS_ENV']がnilの場合、:developmentが適用されることになると思いますが、
ENV['RAILS_ENV']がnilの場合などありえますか?どういったケースになりますか?

・質問3。
質問1がRails.envで出力した結果とENV['RAILS_ENV']が同等だった場合は不要の質問となりますが、
rails consoleなどでENV['RAILS_ENV']を調べる方法はありますか?
本番環境でENV['RAILS_ENV']を調べたいのですが、諸事情でファイルはあまり変更できません。
ファイル変更可能であるのならば、

puts ENV['RAILS_ENV']

 で調べればよいのはわかるのですが。

・質問4。
setメソッドって、Railsのリファレンスにありますか?
setメソッドに関して、検索してもあまり記事が出てこないのですが、
何か使い方とか説明が載ってる記事や、説明など教えていただけませんか?
おそらく、第1引数の変数に第2引数の値を代入するであろうことは想像はつくのですが、
ドキュメントや説明記事を見かけないのでしっくりこない感じです。

set :environment, rails_env

・質問5。
:environmentは何ですか?
検索しても情報が出てこなかったのですが、:environmentは何を指しているのでしょうか?

set :environment, rails_env

 

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

Ruby on Rails 5
Windows(Railsのローカル環境)
Linux(Railsのテスト環境、本番環境, nginx)

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

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

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

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

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

guest

回答1

0

ベストアンサー

回答1
ENV['RAILS_ENV'] RAILS起動時の環境変数 RAILS_ENV の値です
rails consoleで、Rails.envで出力した結果と
*意味は一緒ですが
*railc c の場合は development がdefaultですが、サーバ起動はその時にどの環境で起動したかによって、値事自体は変わります。

回答2
rails_env = ENV['RAILS_ENV'] || :development とは
ENV['RAILS_ENV'] が定義されていたらそれを、なかった :development をrails_envにしまうという意味です
> ENV['RAILS_ENV']がnilの場合などありえますか?
大抵はそうです。わざわざそんなの指定して起動しないでしょう、変える必要iが有るとき以外は。
なので、その時は developmentを入れる という処理が大抵されてると思います

回答3
ソースを変更しないなら、無いです。
サーバを起動するのはあなたですかr、どの環境で起動したかは判るかと

回答4
RAILSのお仕着せの中には set はないと思います。
wheneverの どこかで 「cron実行時の環境変数を設定」するための情報を保存するmethodとして? 定義されてるのでしょう

回答5
cron実行時に 環境変数を設定するための 多分 Hashがあって、その keyでしょう。 おそらく RAILS_ENV を設定するための。

投稿2019/09/30 07:44

編集2019/09/30 07:48
winterboum

総合スコア23567

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

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

tkshp

2019/10/01 02:06

ご回答ありがとうございます。 返信が遅くなり、大変申し訳ありません。 回答1,3,4に関しては理解できました。ありがとうございます。 回答2について。 確認させていただきたいのですが、 rails runnerで環境を指定しなくて試してみても、developmentだったのですが、 railsコマンドで環境を指定しないで実行すると、環境はdefaultでdevelopに決まるけど、 それ以外の方法でrailsを環境を指定しないで実行すると、ENV['RAILS_ENV']がnilになるという認識で合っていますか? 回答5について。 >cron実行時に 環境変数を設定するための多分 Hashがあって、その keyでしょう。 これは、wheneverのどこかで、たぶんHashがあるということでしょうか?
winterboum

2019/10/01 03:13

回答2について。 どの場合でも ENV['RAILS_ENV']がnil です。でもnilのままだとプログラムの実行上問題があるので、 nil だったら :default にする、という処理が(多分全部の)プログラムに入っています。中には ENV['RAILS_ENV'] にも設定するものもある。(無いものも有るかもしれない) 回答5について。 多分そうです。
tkshp

2019/10/01 04:08 編集

ご回答ありがとうございます。 私の理解力がなくてすみません。 回答2についてですが、 >どの場合でもENV['RAILS_ENV']がnil です。 「どの場合でも」とおっしゃっていますが、rails s -e productionのように環境を指定して実行したら、ENV['RAILS_ENV']には、nilではなくて、指定した環境(この例ではproduction)が入るということで合っていますか? あと、もう1点すみません。 > Rails.env で出力されるものは、Railsを動かすサーバーのdefaultの環境ということで合っていますか?
winterboum

2019/10/01 05:31

あなたの質問に、「railsを環境を指定しないで実行すると、」と条件がついています。 > Rails.env で出力されるものは  設定した環境です。環境無指定の場合はプログラムが決めているdefaultの環境です
tkshp

2019/10/01 07:46

ご回答ありがとうございます。 理解できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問