ruby on rails - establecer default_url_options al inicializar
ruby-on-rails initialization (2)
La respuesta es ... es imposible porque default_url_options se implementa como una función, no como un attr.
Desde action_pack / action_controller / base.rb: 1053:
# Overwrite to implement a number of default options that all url_for-based methods will use. The default options should come in
# the form of a hash, just like the one you would use for url_for directly. Example:
#
# def default_url_options(options)
# { :project => @project.active? ? @project.url_name : "unknown" }
# end
#
# As you can infer from the example, this is mostly useful for situations where you want to centralize dynamic decisions about the
# urls as they stem from the business domain. Please note that any individual url_for call can always override the defaults set
# by this method.
def default_url_options(options = nil)
end
Necesito forzar al host en uno de los entornos en mi aplicación de rieles.
Puedo hacer que la anulación funcione incluyendo
def default_url_options(opts={})
opts.merge({:host => ''stg.my-host.com''})
end
en la aplicación / controladores / application.rb
Pero, ¿hay alguna manera de configurar esto al inicializar, preferiblemente en un archivo config / environments / ...? Me gustaría mantener la lógica de env condicional fuera del controlador.
Pero cuando intento
config.action_controller.default_url_options = { ... }
o incluso
ActionController::Base.default_url_options = { ... }
Obtengo un "método indefinido", incluso si es un wrap-up en config.after_initialize {...}
¿Alguna idea?
Puede forzar la configuración de esta manera:
config.action_mailer.default_url_options = { :host => "foo.com" }
El problema en tu código es que has usado config.action_controller
lugar de config.action_mailer