Para configurações gerais de aplicativos que não precisam ser armazenadas em uma tabela de banco de dados, eu gosto de criar um config.yml
arquivo no diretório de configuração . Para o seu exemplo, pode ser assim:
defaults: &defaults
audiocast_uri_format: http://blablalba/blabbitybla/yadda
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults
Este arquivo de configuração é carregado a partir de um inicializador personalizado em config / initializers :
# Rails 2
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV]
# Rails 3+
APP_CONFIG = YAML.load_file(Rails.root.join('config/config.yml'))[Rails.env]
Se você estiver usando o Rails 3, certifique-se de não adicionar acidentalmente uma barra principal ao seu caminho de configuração relativo.
Você pode recuperar o valor usando:
uri_format = APP_CONFIG['audiocast_uri_format']
Veja este Railscast para detalhes completos.
YAML::ENGINE.yamler = 'syck'
para que isso funcione stackoverflow.com/a/6140900/414220RAILS_ENV
porRails.env
eRAILS_ROOT
comRails.root
.Rails.application.config.whatever_you_want = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
A versão do Rails 3 do código do inicializador é a seguinte (RAILS_ROOT & RAILS_ENV estão obsoletos)
APP_CONFIG = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
Além disso, o Ruby 1.9.3 usa Psych, que faz com que as chaves de mesclagem sejam sensíveis a maiúsculas e minúsculas; portanto, você precisará alterar seu arquivo de configuração para levar isso em conta, por exemplo
fonte
"#{Rails.root.to_s}"
;"#{Rails.root}"
trabalho.Rails.root.join('config', 'config.yml')
vez de"#{Rails.root.to_s}/config/config.yml"
AppName::Application.config.custom
Trilhos> = 4.2
Basta criar um
YAML
arquivo emconfig/
diretório, por exemplo:config/neo4j.yml
.O conteúdo de
neo4j.yml
pode ser algo como abaixo (para simplificar, usei o padrão para todos os ambientes):em
config/application.rb
:Agora, sua configuração personalizada está acessível como abaixo:
Mais informações
O documento oficial da API do Rails descreve o
config_for
método como:Se você não quiser usar um
yaml
arquivoComo o guia oficial do Rails diz:
Exemplo
Referência oficial do
config_for
método | Guia Oficial do Railsfonte
Etapa 1: Crie config / initializers / appconfig.rb
Etapa 2: Criar config / config.yml
Etapa 3: obter constantes em qualquer lugar do código
fonte
Eu só queria atualizar isso para obter as novidades interessantes do Rails 4.2 e 5, agora você pode fazer isso em qualquer um dos seus
config/**/*.rb
arquivos:(e isso é literal
x
aqui, ou seja, oconfig.x.
literal deve ser isso, e você pode adicionar o que quiser depois dox
)... e isso estará disponível no seu aplicativo como:
Veja mais aqui: http://guides.rubyonrails.org/configuring.html#custom-configuration
fonte
x
.You can configure your own code through the Rails configuration object with custom configuration under either the config.x namespace, or config directly. The key difference between these two is that you should be using config.x if you are defining nested configuration (ex: config.x.nested.nested.hi), and just config for single level configuration (ex: config.hello).
Fonte: guias.rubyonrails.org/configuring.html#custom-configurationApenas algumas informações extras sobre este tópico:
".com_indifferent_access" permite acessar os valores no hash usando uma chave de cadeia ou com uma chave de símbolo equivalente.
por exemplo.
APP_CONFIG['audiocast_uri_format'] => 'http://blablalba/blabbitybla/yadda'
APP_CONFIG[:audiocast_uri_format] => 'http://blablalba/blabbitybla/yadda'
É uma questão de conveniência, mas prefiro ter minhas chaves representadas como símbolos.
fonte
Eu uso algo semelhante ao John for Rails 3.0 / 3.1, mas eu erb analise o arquivo primeiro:
Isso me permite usar o ERB na minha configuração, se necessário, como ler o URL de redistogo do heroku:
fonte
Rails 4
Para criar um yaml de configuração personalizada e carregá-lo (e disponibilizar para o seu aplicativo) semelhante a como
database_configuration
.Crie o seu
*.yml
, no meu caso, eu precisava de um arquivo de configuração redis.config/redis.yml
Em seguida, carregue a configuração
config/application.rb
Acesse os valores:
Rails.configuration.redis_configuration[Rails.env]
ao semelhante como você pode ter acesso ao seudatabase.yml
porRails.configuration.database_configuration[Rails.env]
fonte
Rails.configuration.redis_configuration = YAML.load_file("#{Rails.root}/config/redis.yml")[Rails.env]
. No entanto, nos trilhos 4.2 e acima, a resposta de smathy é provavelmente um caminho mais simples.Com base na solução elegante de Omer Aslam, decidi converter as chaves em símbolos. A única mudança é:
Isso permite que você faça referência a valores por símbolos como chaves, por exemplo
Isso parece mais agradável aos meus olhos.
(Postado como resposta, pois minha reputação não é alta o suficiente para comentar a resposta de Omer)
fonte
Eu gosto de simpleconfig . Ele permite que você tenha por configuração de ambiente.
fonte
veja minha resposta para Onde é o melhor local para armazenar os parâmetros do aplicativo: banco de dados, arquivo, código ...?
Uma variação do que você tinha é uma referência simples a outro arquivo. Ele vê que o environment.rb não é atualizado constantemente e não possui muitas informações específicas sobre o aplicativo. Embora não seja uma resposta específica para sua pergunta de 'é o caminho do Rails?', Talvez haja alguma discussão sobre isso.
fonte
Prefiro acessar as configurações através da pilha global de aplicativos. Evito excesso de variáveis globais no escopo local.
config / inicializadores / myconfig.rb
E acesse-o com.
fonte
Minha maneira de carregar as Configurações antes da inicialização do Rails
Permite usar configurações na inicialização do Rails e definir configurações por ambiente
Você pode obter as configurações de duas maneiras: Configurações ['email'] ou Settings.email
fonte
Minha melhor maneira de configuração personalizada, com mensagem de aumento quando setting.yml está ausente.
é carregado de um inicializador personalizado em config / initializers / custom_config.rb
Crie um YAML em config / setting.yml
fonte