Mi aplicación de rieles tiene un rastreador de sitio web que carga las credenciales de autenticación que el rastreador utiliza en un inicializador de rieles en config/initializers
. El inicializador carga la autenticación llamando a un método modelo en el modelo SiteLogin.¿Cómo omito la carga de los inicializadores de Rails al ejecutar una tarea de rake?
Cuando ejecuto rake db:migrate
para crear la tabla de modelo SiteLogin
, falla porque el inicializador espera que la tabla de la base de datos ya exista. Simplemente puedo comentar el código en mi inicializador, ejecutar la migración para crear la tabla, luego descomentar el código del inicializador y no preocuparme por el problema.
El problema es que estoy usando Capistrano para implementar y esto significa que tendría que implementar primero sin el código de inicializador para ejecutar la migración y luego implementar de nuevo con el código de inicializador. ¿Hay una mejor manera de hacerlo o mi enfoque es totalmente incorrecto en este caso?
He aquí algunos ejemplos de código para explicar mejor mi 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