81
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails consoleでreload!する場合の注意点

Posted at

reload!コマンドを使った時に、ちょっとハマったエピソードです。

ある日のできごと

あるModelを作りました。

class Hoge < ActiveRecord::Base
  def foo
    'Hello'
  end
end

rails cでRailsのコンソールを立ち上げながら、Modelの挙動を確認しました。

> x = Hoge.find 1
> x.foo
 => "Hello"

ちょっと訳あってメソッドを修正しました。

class Hoge < ActiveRecord::Base
  def foo
    'Bye'
  end
end

コンソールを再起動するのは面倒なので、Google先生に尋ねたところ、reload!と打てば良いと教えてもらいました。

> reload!
Reloading…
  => true

では、動作確認。

> x.foo
  => "Hello"

あれ?変わってない・・・。
悩むこと数十分。そしてギブアップ。

そこで隣にいた松村先生に質問したところ、reload!した後に、オブジェクトの再ロードも必要になると教えてもらいました。

> x = Hoge.find 1
> x.foo
 => "Bye"

というわけで、reload!だけではなく、すでに読み込まれているオブジェクトに対してはそちらも再ロードが必要になります。

ちなみにオブジェクトに対してreloadメッセージを送ってもダメです。

> x.reload
> x.foo
  => "Hello"

以上、Rails初心者の方はご注意を!

81
66
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
81
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?