omo posso executar ALGUNS inicializadores ao executar um ativo do Rails: pré-compila
Tenho um aplicativo que atualizei recentemente para o Rails 3.2.1 (do Rails 3.0.x) e refatorei os recursos JS e CSS para usar o novo pipeline de ativos. O aplicativo está hospedado no Heroku com a pilha Celadon Ceda
App ConfigMantenho a configuração específica do aplicativo em um arquivo YAML chamado app_config.yml e carrego-o em uma variável global APP_CONFIG usando um inicializador:
# config/initializers/load_app_config.rb
app_config_contents = YAML.load_file("#{Rails.root.to_s}/config/app_config.yml")
app_config_contents["default"] ||= {}
APP_CONFIG = app_config_contents["default"].merge(
app_config_contents[Rails.env] || {} ).symbolize_keys
Asset Compilation on Heroku @Heroku tem suporte para o pipeline de ativos do Rails integrado à pilha Cedar. Quando você envia um aplicativo para o Heroku, ele chama automaticamenterake assets:precompile
no servidor como uma etapa do processo de implantação. No entanto, isso é feito em um ambiente em área restrita sem acesso ao banco de dados ou vars ENV normai
Se o aplicativo puder inicializar normalmente durante a pré-compilação de ativos, será gerado um erro ao tentar se conectar ao banco de dados. Isso é facilmente resolvido adicionando o seguinte ao arquivo application.rb:
# Do not load entire app when precompiling assets
config.assets.initialize_on_precompile = false
Quandoinitialize_on_precompile = false
está definido, nenhum dos inicializadores emconfig/initializers/*
São executados. O problema que estou enfrentando é que preciso que a variável APP_CONFIG esteja disponível durante a pré-compilação do ativ
Como posso obterload_app_config.rb
a ser carregado durante a compilação de ativos sem inicializar o aplicativo inteiro? Posso fazer algo com ogroup
parâmetro passado para Rails :: Application.initialize! ?