Como posso melhorar a trilhos ajudante método com um arquivo de configuração?
-
06-09-2019 - |
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?
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.