Pergunta

Eu tenho um trilhos ajudante no meu arquivo application_helper.rb parecida com esta:

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

variável da external_links 'é um hash que deve ser proveniente de um arquivo externo. O arquivo pode ser algo tão simples como um hash rubi ou uma configuração YML simples.

Talvez eu estou faltando alguma coisa - eu pensei que eu seria capaz de definir o hash na sintaxe rubi em um arquivo externo e 'exigem' lo de environment.rb, mas que não expõe a variável de hash na helper .

Como posso externalizar um hash ruby ??tal que será "no âmbito" em um método auxiliar aplicação?

Foi útil?

Solução

Use um arquivo básico YML como você indicou e depois carregá-lo via:

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

Em seguida, você pode acessá-lo através do objeto "config" em conformidade. Se a alteração do arquivo doesnt entre os pedidos que você pode armazenar em cache esta carga de arquivo para uso posterior (por isso não é aberto e analisado em cada utilização), mas isso é uma otimização de desempenho e não crítico para uma prova de conceito.

Outras dicas

Eu uso Aplicação de configuração , que me permite configurar RAILS_ROOT / config / application_config.yml assim:

  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

Em seguida, referenciá-los como este:

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

Há também a AppConfig plug-in , que parece ainda melhor, mas eu não tenho tentou isso ainda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top