need to initialize contant arrays , where to do it...

I need to load names, from the table 'domains' into an array (frequently used in my app..) ALL_DOMAINS = Domain.find(:all).map { |d| d.name }.compact

I tried to write it in an initialize or in my application.rb BUT

problem : when I run a rake db:migrate initially (after creating the database) I get an error..

rake db:migrate --trace (in /Users/yves/Developpement/Projects/rails/presdemoi) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! Mysql::Error: Table 'yves_pdm_dev.domains' doesn't exist: SELECT * FROM `domains`

right, the table is not yet created, that's why I want to do a migrate ...

any clue ?

thanks

Kad Kerforn wrote:

I need to load names, from the table 'domains' into an array (frequently used in my app..) ALL_DOMAINS = Domain.find(:all).map { |d| d.name }.compact

I tried to write it in an initialize or in my application.rb BUT

problem : when I run a rake db:migrate initially (after creating the database) I get an error..

rake db:migrate --trace (in /Users/yves/Developpement/Projects/rails/presdemoi) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! Mysql::Error: Table 'yves_pdm_dev.domains' doesn't exist: SELECT * FROM `domains`

right, the table is not yet created, that's why I want to do a migrate ...

any clue ?

thanks

I advise against a constant based on database content. You can do something functionally equivalent using a class variable to cache the data the first time it's requested:

class Domain

   def self.cached_names       @@cached_names ||= Domain.find(:all).map { |d| d.name }.compact    end

end

Then use Domain.cached_names instead of your constant.

Jeremy http://jeronrails.blogspot.com