Rais e os testes dos assets
As vezes acontece de um deploy falhar. Não é o esperado. Mas acontece. Dia destes, aconteceu comigo, mas por causa dos assets. Mais precisamente um código javascript.
Não é que estava errado ou gerando falhas, mas o código em si não era compatível com o Uglifier, compilador de JS usado por padrão no Rails. O que aconteceu foi que a sintaxe usada funcionava de boa no navegador e em desenvolvimento não dava o erro. Mas em produção dava erro na hora de compilar os assets.
E o pior é que não havia o indicativo de onde dava o erro no stack trace. Rodei, então, a tarefa rake assets:precompile em desenvolvimento e, também não deu erro. Mas o erro estava lá em produção.
Umas googladas depois, descobri que o Uglifier não "entende" algumas especificações mais recentes do Javascript e era sugerido evitar algumas destas sintaxes.
Algo como este código:
function baba(param1: 'value'){
// some code
}
A expressão param1: 'value' não é válida para o Uglifier. Resolvido isso, o deploy se deu normal, mas depois de mais ou menos meia hora e algum estresse. Para evitar isso, criei um teste para compilar os assets individualmente e depois disso, já me peguei uma vez fazendo código que não iria passar. Coisa bem simples e tem me ajudado:
require "rails_helper"
describe "rake assets:precompile", type: :task do
context "assets" do
describe "static precompile" do
JS_PATH = "app/assets/javascripts/**/*.js";
Dir[JS_PATH].each do |file_name|
it "compile #{file_name}" do
Uglifier.compile(File.read(file_name))
end
end
end
end
end
Comentários
Postar um comentário