งาน 'สภาพแวดล้อม' ใน Rake คืออะไร?


120

ตาม " Custom Rake Tasks ":

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

เท่าที่ฉันรู้:winner => :environmentหมายถึง "ทำenvironmentก่อนwinner" แต่มีอะไรenvironment? ควรใช้เมื่อใด

ฉันพยายามแต่ในรายการฉันไม่สามารถหาrake -Tenvironment


ตรวจสอบไวยากรณ์ใหม่stackoverflow.com/questions/12493337/…
Jahan

คำตอบ:


120

คุณสามารถเข้าถึงแบบจำลองของคุณและในความเป็นจริงสภาพแวดล้อมทั้งหมดของคุณโดยการทำให้งานขึ้นอยู่กับงานสภาพแวดล้อม run rake RAILS_ENV=staging db:migrateนี้ช่วยให้คุณทำสิ่งที่ชอบ

โปรดดูที่ " Custom Rake Tasks "


4
กำหนดไว้ที่ใดในแหล่งที่มา? ฉันพบว่างานคราดอยู่ที่ไหนและฉันพบนิยามงานว่างที่ขึ้นอยู่กับ 'app: environment' แต่ฉันไม่พบคำจำกัดความของแอป: งานสภาพแวดล้อม github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity

4
@odigity ดูเหมือนที่นี่: github.com/rails/rails/blob/v4.2.4/railties/lib/rails/…
Carson Reinke

41

โหลดในสภาพแวดล้อม Rails ของคุณเพื่อให้คุณสามารถใช้โมเดลของคุณได้จริงหรือไม่ มิฉะนั้นจะไม่มีความคิดเกี่ยวกับสิ่งเหล่านั้น

ดังนั้นหากคุณทำงานที่เพิ่งทำputs "HI!"ไปคุณก็ไม่จำเป็นต้องเพิ่ม:environmentงานในการอ้างอิง แต่ถ้าคุณต้องการที่จะทำสิ่งที่User.find(1)ดีที่ต้องการมัน


35

การรวมถึง=> :environmentจะบอกให้ Rake โหลดสภาพแวดล้อมแอปพลิเคชันโดยสมบูรณ์ทำให้งานที่เกี่ยวข้องสามารถเข้าถึงสิ่งต่างๆเช่นคลาสผู้ช่วย ฯลฯ หากไม่มี:environmentคุณจะไม่สามารถเข้าถึงสิ่งพิเศษเหล่านั้นได้

นอกจากนี้=> :environmentตัวเองไม่ได้จัดให้มีตัวแปรสภาพแวดล้อมใด ๆ ที่เกี่ยวข้องเช่นenvironment, @environment, RAILS_ENVฯลฯ


วิธีการของเอกสารของงานนั้นง่ายเกินไปที่จะเข้าใจ
อัลเบิร์ตชิง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.