ruby-on-rails initialization boot actioncontroller

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