rails控制台是否动态?

Jus*_*tin 15 ruby ruby-on-rails ruby-on-rails-3

rails(~ rails c)中的控制台是动态的吗?例如; 如果我打开控制台,然后对模型进行更改,它会选择这些更改,还是我必须退出控制台并rails c再次运行才能获取模型中的更改?

Rya*_*igg 36

您需要reload!在控制台中调用该方法以重新加载更改.rails server在开发模式下自动调用此方法的魔力.

正如评论中指出的那样和另一个答案在这里,如果您改变与应用程序的环境有关的事情,例如向其中添加新宝石Gemfile,对任何内容进行更改config或添加新插件,那么您将需要重新启动安慰.任何更改app都可以重新加载reload!

如果您使用这种特殊方式来测试方法是否有效,我不会.测试(如Test :: Unit或RSpec)变体更好,因为您有一种可重复的方式一次又一次地运行它们.rails console非常适合一次性测试,但如果你想编写一个可维护的应用程序,那么编写测试.

  • 这是一个不明显的案例.假设f是Foo类的一个实例.如果你改变Foo,输入`reload!`,甚至`f.reload`,f.bar仍然不会更新.你需要重新分配Foo.至少,这就是我在OS X Lion上使用RVM在Ruby 1.9.3p125和Rails 3.2.0上的工作方式. (3认同)
  • 如果您更改了 gem 或插件,则需要退出并重新启动控制台;`reload!` 不包括这些类型的东西。 (2认同)