Rails developmentモードなのにコードの変更が反映されない

Rails5 (developmentモード) + Vagrant の環境で、コントローラの内容を変えたのにビューに反映されない場合のメモ。

結論

Vagrantのsynced_folderrsyncモードで動かしたら解決した。

環境

ホスト側

  • Mac OS X El capitan
  • Vagrant: synced_folder (rsyncモードではない)

ゲスト側

  • Ubuntu Server 16.04
  • Rails5 (developmentモード)

現象

コントローラの内容を次のように変えたがビューに反映されない。サーバーの立ち上げ直後の状態で固定。

変更前

render text: "hello one"

変更後

render text: "hello two"

ホストとゲストの時刻にも特に問題は見られない。

ホストの時刻 (UTC表示)

$date -u +"%Y/%m/%d %I:%M:%S"
2016/08/29 11:51:51

ゲストの時刻

$date -u +"%Y/%m/%d %I:%M:%S"
2016/08/29 11:51:58

対策

vagrantのsynced_folderrsyncモードで動かすように設定する。

Vagrantfileを開き、次のような感じでsynced_foldertypersyncに設定する。

config.vm.synced_folder "sync", "/home/vagrant/sync",
 type: "rsync",
 owner: "vagrant",
 group: "vagrant",
 rsync__exclude: [".git/", "vendor/"]

vagrantを再起動する。

$ vagrant reload

rsyncを一度実行する。

$ vagrant rsync

rsync-autoを実行し、以後のホスト側の変更を自動的にゲスト側にアップロードするようにする。デーモン化されないのでCtrl+Cを押すまで終了しない。

$ vagrant rsync-auto

参考記事