[ruby-it] Eseguire codice dopo l'inizializzazione del sistema

Daniele Tonon tonon a vitamino.it
Lun 1 Set 2008 10:48:08 CEST


Buongiorno,
ho la necessità di avviare un processo in background, che accede al db,
non appena l'applicazione Rails diviene attiva. Per l'esecuzione di tale
processo ho optato per Spawn, il quale sembra funzionare correttamente.
Trovo invece grosse difficoltà ad eseguire il codice allo startup.

Spulciando la documentazione sul processo di init sembra che il posto
migliore per inserire tale blocco sia nel config.after_initialize
all'interno di config/enviroments/xxx.rb. Il problema è che Rails
lamenta sempre  un "undefined method spawn".

Notando che nell'init.rb del plugin lo stesso viene incluso nella classe
ActiveRecord::Base ho quindi optato per la creazione della seguente
classe:

class Setup < ActiveRecord::Base
def initialize
  spawn do
    RAILS_DEFAULT_LOGGER.error('start bg controll process')
    while true
      .... code
      sleep(10)
    end
  end
end
end

che istanzio dentro il solito file enviroment/....

config.after_initialize do
  s = Setup.new
end

Questa volta nessuna lamentela per il plugin, ma ottengo un laconico:

/Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:29:in
`table_structure': Could not find table 'setups'
(ActiveRecord::StatementInvalid)

Che fare? :)

Grazie.

Daniele
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list