Reload the rails console

Sarun Sermsuwan picture Sarun Sermsuwan · Oct 20, 2011 · Viewed 17k times · Source

Regarding the use of Rails console, when I make some change on a model, do I need to reload the rails console every time to make that change reflects?

For example, I have my original code as follows:

class Article < ActiveRecord::Base
  validates :title, :presence => true
  validates :body, :presence => true
end

Later, I want to add some additional attribute as below.

class Article < ActiveRecord::Base
  validates :title, :presence => true
  validates :body, :presence => true

  def long_title
    "#{title} - #{published_at}"
  end
end

Does it need to run the command "reload!" every time to be able to do the "long_title" method call? Otherwise, I will get an error saying as the attribute hasn't been defined. and Why do we need to perform that manually?

Answer

Ryan Bigg picture Ryan Bigg · Oct 20, 2011

Yes, you need to call reload! as this will clear the loaded constants that have been loaded and will load them as they're referenced in the console.

If you have old objects from before the reload! you will need to call reload on these individual objects or find new objects and work with them if you want to try out the new method.

As an alternative, I would really recommend looking into a testing framework such as RSpec which gives you repeatable tests and a safety net for your application.

It looks like you're trying to use the console as a testing tool for new functionality in your application, which is what RSpec is better suited for. The console is really good for experimentation.