L'app My Rails dispone di un crawler del sito Web che carica le credenziali di autenticazione utilizzate dal crawler in un inizializzatore di rotaie in config/initializers
. L'inizializzatore carica l'autenticazione chiamando un metodo modello nel modello SiteLogin.Come saltare il caricamento degli inizializzatori Rails durante l'esecuzione di un'attività rake?
Quando eseguo rake db:migrate
per creare la tabella di modello SiteLogin
, non riesce perché l'inizializzatore si aspetta che la tabella di database esista già. Posso semplicemente commentare il codice nel mio inizializzatore, eseguire la migrazione per creare la tabella, quindi decommentare il codice inizializzatore e non preoccuparti del problema.
Il problema è che sto utilizzando Capistrano per la distribuzione e questo significherebbe che dovrei eseguire il deploy prima senza il codice di inizializzazione per eseguire la migrazione, quindi distribuire di nuovo con il codice di inizializzazione. C'è un modo migliore per farlo o il mio approccio è totalmente sbagliato in questo caso.
Ecco qualche esempio di codice per spiegare meglio il mio caso:
# config/initializers/site_crawler_init.rb
SiteCrawler.setup do |config|
config.hostname = "www.example.com"
end
# model/site_crawler.rb
class SiteCrawler
...
class << self
attr_accessor :configuration
def setup
self.configuration ||= Configuration.new
yield(configuration)
end
end
class Configuration
attr_accessor :hostname, :login_credentials
def initialize
@login_credentials = SiteLogin.admin_user
...
end
end
end