Pregunta

Tengo un ayudante de rieles en mi archivo application_helper.rb que tiene este aspecto:

def external_link(name)
    url = external_links[name]
    if url.blank?
        Rails.logger.error "No URL defined for external link [#{name}]!"
        return "[URL undefined]"
    end
    return url
end

Las variables '' external_links es un hash que se debe proceder de un archivo externo. El archivo puede ser algo tan simple como un hash rubí o un simple configuración YML.

Tal vez me falta algo - pensé que sería capaz de definir el hash en la sintaxis de rubí en un archivo externo y 'require' desde environment.rb, pero eso no quiere exponer a la variable de hash en el ayudante .

¿Cómo puedo exteriorizar un hash rubí tal que será "de alcance" en un método de aplicación de ayuda?

¿Fue útil?

Solución

Utilice un archivo básico YML como usted ha indicado y luego cargarlo a través de:

config = YAML::load_file(RAILS_ROOT+'/config/external_urls.yml')

A continuación, puede acceder a ella a través del objeto "config" en consecuencia. Si el cambio de archivos duerma entre las peticiones que podía almacenar en caché esta carga de archivos para su uso posterior (así que no se abrió y analiza en cada uso), pero eso es una optimización del rendimiento y no es crítica para una prueba de concepto.

Otros consejos

de aplicaciones Config , que me permite configurar RAILS_ROOT / config / application_config.yml como esto:

  development: &defaults
    items_per_page: 25
    secure_with_basic_auth: false
    base_url: development.com
  test:
    <<: *defaults
    base_url: test.com
  production:
    <<: *defaults
    base_url: production.com

A continuación, hacer referencia a ellos como esto:

  class FooController < ApplicationController
    def index
      @base_url = property(:base_url)
    end
  end

También está el AppConfig complemento , que se ve aún mejor, pero no tienen probado todavía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top