LoginSignup
7
2

More than 3 years have passed since last update.

Configの変更が反映されないのはSpringが起動していたためでした

Last updated at Posted at 2020-05-07

はじめに

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に書いたのに、、、

apprication.rb

    config.generators do |g|
      g.skip_routes true
      g.assets false
      g.helper false
      g.test_framework false
    end

で、講師のかたに「rails cconfigの値を確認してみたら」と助言をいただく。
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

嘘だろ。configundefinedなわけはないはず!

追記(2020/05/08)

嘘だろ。configundefinedなわけはないはず! というのはてんで愚かな過ちでした。
rails cでタイムゾーンの設定はできない、というあまりにも当たり前なミスをしていました。タイムゾーンの変更は、例えば次のようにconfigファイルに記述しなければいけません。

apprication.rb
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回目以降の起動時間が短縮されます。

RailsでSpringを導入して開発効率を上げる

bin/railsを繰り返すときの処理の時間を短縮してくれるみたいです。プリローダーなどの知識が少ないので、深堀りは別の機会にします。

講師のかたによれば、「修正の反映がされないときがたまにあるので、とりあえずSpringを止めてみることがある」そうです。頭に入れとこうと思います。

終わりに

最後まで読んでくださってどうもありがとうございます。
どなたかの役に立ち、学習が前進してもらえれば、うれしいです。

参考文献

たいへん助けていただきました。感謝いたします。

Rails Consoleで確認するとConfig(Settings)の更新がされない時
RailsでSpringを導入して開発効率を上げる

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2