Nhiệm vụ 'môi trường' trong Rake là gì?


120

Theo " Nhiệm vụ Cào tùy chỉnh ":

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

Theo như tôi biết, :winner => :environmentcó nghĩa là "làm environmenttrước winner". Nhưng là gì environment? Khi nào tôi nên sử dụng nó?

Tôi đã thử rake -T, nhưng trong danh sách tôi không tìm thấy environment.


Kiểm tra cú pháp mới stackoverflow.com/questions/12493337/…
Jahan

Câu trả lời:


120

Bạn có thể truy cập vào các mô hình của mình và trên thực tế, toàn bộ môi trường của bạn bằng cách thực hiện các nhiệm vụ phụ thuộc vào nhiệm vụ môi trường. Điều này cho phép bạn làm những việc như run rake RAILS_ENV=staging db:migrate.

Xem " Nhiệm vụ Cào tùy chỉnh ".


4
Nó được định nghĩa ở đâu trong nguồn? Tôi đã tìm thấy vị trí của các tác vụ rake và tôi đã tìm thấy một định nghĩa tác vụ trống phụ thuộc vào 'ứng dụng: môi trường', nhưng tôi không thể tìm thấy định nghĩa của tác vụ ứng dụng: môi trường. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

Nó tải trong môi trường Rails của bạn để bạn thực sự có thể sử dụng các mô hình của mình và những gì không. Nếu không, nó không có ý tưởng về những điều đó.

Vì vậy, nếu bạn đã thực hiện một nhiệm vụ vừa thực hiện puts "HI!"thì bạn không cần thêm :environmentnhiệm vụ vào các phần phụ thuộc. Nhưng nếu bạn muốn làm một điều gì đó User.find(1)tốt như vậy thì bạn sẽ cần nó.


35

Bao gồm => :environmentsẽ yêu cầu Rake tải đầy đủ môi trường ứng dụng, cấp cho nhiệm vụ liên quan quyền truy cập vào những thứ như lớp học, trình trợ giúp, v.v. Nếu không có :environment, bạn sẽ không có quyền truy cập vào bất kỳ tính năng bổ sung nào.

Cũng => :environmenttự nó không cung cấp bất kỳ biến môi trường liên quan đến, ví dụ như environment, @environment, RAILS_ENVvv


Phương thức của tài liệu nhiệm vụ quá đơn giản để hiểu nó.
Albert.Qing
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.