はじめに
config/aprication.rb
の変更が反映されない原因はspring
で、それを止めたら無事に反映されました。その試行錯誤の記録です。
#環境
OS: macOS Catalina 10.15.4(19E287)
ruby: 2.6.4
rails: 5.2.3
#前提
rails g
を実行する際に、不必要なファイルなどを生成することを防ぐ必要がありました。config/aprication.rb
にて適切にコードを書き、保存し、rails s
をしてもうまくいきませんでした。rails g
で不必要なファイルも生成されてしまうのです。
書き加えたコードはこちら。module
のなかのclass
に書いたのに、、、
config.generators do |g|
g.skip_routes true
g.assets false
g.helper false
g.test_framework false
end
で、講師のかたに「rails c
でconfig
の値を確認してみたら」と助言をいただく。
config
の値を確認する、ということがどんなアクションをすればいいのかはわからなかったですが、とりあえずrails c
を開く。
いろいろ調べて、Time.zoneの変更が反映されるかを確認することにしました。すると、、、
irb(main):001:0> Time.zone.name
=> "UTC"
irb(main):002:0> config.time_zone = 'Tokyo'
Traceback (most recent call last):
1: from (irb):2
NameError (undefined local variable or method `config' for main:Object)
Did you mean? conf
嘘だろ。config
がundefined
なわけはないはず!
###追記(2020/05/08)
嘘だろ。config
がundefined
なわけはないはず! というのはてんで愚かな過ちでした。
rails c
でタイムゾーンの設定はできない、というあまりにも当たり前なミスをしていました。タイムゾーンの変更は、例えば次のようにconfig
ファイルに記述しなければいけません。
config.time_zone = 'Tokyo'
つまり、Spring
に出会えたのは、偶然だったいうことです。怪我の功名?
あまりにもお粗末なのですが、自戒の意味を込めて残しておきます、、、
###追記 終わり
#Springを止める
ということで「rails console, config 変更されない
」とぐぐると次のドンピシャなタイトルの記事にぶつかりました。
Rails Consoleで確認するとConfig(Settings)の更新がされない時
定数を環境毎に管理できるgem
config
で、config/settings.yml
の中身を変更して、Rails Consoleで確認しても反映されない場合がある。
で、spring
が起動しているか確認するために、$ ./bin/spring status
を実行すると、、、
Spring is running:
69543 spring server | 330_KentarouTawara_runteq_learning_basic | started 58 mins ago
69544 spring app | 330_KentarouTawara_runteq_learning_basic | started 58 mins ago | development mode
ばっちし動いていた。なので、$ ./bin/spring stop
を実行すると、、、
Spring stopped.
となり、念のためもういちど$ ./bin/spring status
を実行すると、、、
Spring is not running.
で、当初の目的だったconfig
の修正を保存し、サーバーを再度立ち上げ、試しに bin/rails g controller tasks index show
を実行すると、、、
Running via Spring preloader in process 70888
create app/controllers/tasks_controller.rb
invoke erb
create app/views/tasks
create app/views/tasks/index.html.erb
create app/views/tasks/show.html.erb
ルート、asset、helper、テストファイルなどが、生成されていないことが確認できます。一件落着です。
#【課題】Springって何なの?
ざっくりと調べたところ、先のリンクと同じかたが次のように解説してありました。
Spring は Rails アプリケーションの preloader(プリローダー)の gem です。Rails アプリケーションをバックグラウンドで走らせたままにしておくことにより(pre + load = 前もってロードしておく)、bin/rails や bin/rake コマンドの2回目以降の起動時間が短縮されます。
bin/rails
を繰り返すときの処理の時間を短縮してくれるみたいです。プリローダーなどの知識が少ないので、深堀りは別の機会にします。
講師のかたによれば、「修正の反映がされないときがたまにあるので、とりあえずSpringを止めてみることがある」そうです。頭に入れとこうと思います。
#終わりに
最後まで読んでくださってどうもありがとうございます。
どなたかの役に立ち、学習が前進してもらえれば、うれしいです。
#参考文献
たいへん助けていただきました。感謝いたします。
・Rails Consoleで確認するとConfig(Settings)の更新がされない時
・RailsでSpringを導入して開発効率を上げる