Qual é a tarefa de 'ambiente' no Rake?


120

De acordo com " Custom Rake Tasks ":

desc "Pick a random user as the winner"
task :winner => :environment do
  puts "Winner: #{pick(User).name}"
end

Pelo que eu sei, :winner => :environmentsignifica "fazer environmentantes winner". Mas o que é environment? Quando devo usar?

Tentei rake -T, mas na lista não consegui encontrar environment.


Respostas:


120

Você pode obter acesso aos seus modelos e, na verdade, a todo o ambiente tornando as tarefas dependentes da tarefa do ambiente. Isso permite que você faça coisas como run rake RAILS_ENV=staging db:migrate.

Consulte " Tarefas Rake Customizadas ".


4
Onde está definido na fonte? Descobri onde estão as tarefas rake e encontrei uma definição de tarefa vazia que depende de 'app: ambiente', mas não consigo encontrar a definição da tarefa app: ambiente. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

Ele carrega em seu ambiente Rails para que você possa realmente usar seus modelos e quais não. Caso contrário, não tem ideia dessas coisas.

Portanto, se você fez uma tarefa que acabou de puts "HI!"fazer, não é necessário adicionar a :environmenttarefa às dependências. Mas se você quiser fazer algo User.find(1)assim, vai precisar.


35

Incluir => :environmentdirá ao Rake para carregar completamente o ambiente do aplicativo, dando à tarefa relevante acesso a coisas como classes, auxiliares, etc. Sem o :environment, você não terá acesso a nenhum desses extras.

Também => :environmentem si não disponibilizar todas as variáveis relacionadas ao meio ambiente, por exemplo environment, @environment, RAILS_ENV, etc.


O método do documento da tarefa é muito simples para entendê-lo.
Albert.Qing,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.