2013-01-13 18 views
18

उत्पादन बनाम विकास में अलग-अलग व्यवहार करने के लिए "फोरमैन तरीका" क्या है? हम चाहते हैं कि फोरमैन देव में सामानों का एक समूह शुरू करना शुरू कर दे, हालांकि उसके अनुसूचित जनजाति उत्पादन में हमें (उदाहरण के लिए) solr शुरू करने की आवश्यकता नहीं है।फोरमैन डेवलपमेंट बनाम उत्पादन (रेल)

उत्तर

3

फोरमैन एक अलग फ़ाइल (-डी) और तर्कों का उपयोग करने के लिए तर्क लेता है कि यह निर्धारित करने के लिए कि क्या चलाना है। यह .foreman फ़ाइल का भी समर्थन करता है जो उन तर्कों को डिफ़ॉल्ट बनने की अनुमति देता है। अधिक जानकारी के लिए http://ddollar.github.com/foreman/ देखें

22

मैं सम्मेलन का पालन करता हूं;

  • Procfile को परिभाषित करता है सभी प्रक्रियाओं
  • .foreman द्वारा निर्धारित विशिष्ट फोरमैन चर

विकास:

  • .env प्रत्येक डेवलपर के लिए सेट वातावरण चर
  • .env.example रों विकास के लिए ETS चूक
  • foreman start शुरू होता है सभी प्रक्रियाओं

उत्पादन:

  • heroku config सेट वातावरण चर
  • heroku ps:scale पर या बंद हो जाती है, जो भी प्रक्रियाओं उत्पादन
  • के लिए

यहाँ की जरूरत है एक परियोजना से एक उदाहरण।

Procfile:

web: bundle exec unicorn_rails -p $PORT -c ./config/unicorn.rb 
worker: bundle exec rake jobs:work 
search: bundle exec rake sunspot:solr:run 

.env.example:

# default S3 bucket 
S3_KEY=keykeykeykeykeykey 
S3_SECRET=secretsecretsecret 
S3_BUCKET=myapp-development 

.env

# developer's private S3 bucket 
S3_KEY=mememememememememe 
S3_SECRET=mysecretmysecret 
S3_BUCKET=myapp-development 

.foreman:

# development port is 3000 
port: 3000 
0

मैंने पर्यावरण-विशिष्ट Procfile एस पहले उपयोग किया है, जो कि बहुत आसान है और ठीक काम करता है।

मूल रूप से आप Procfile.development है, Procfile.production, आदि प्रत्येक में आप procs आप शुरू करना चाहते अनुकूलित कर सकते हैं, तो जैसे foreman के माध्यम से उन्हें चलाने:

foreman start -f Procfile.development 

एक और दृष्टिकोण आपके Procfile में स्क्रिप्ट को संदर्भित करने के लिए है, और प्रत्येक स्क्रिप्ट के भीतर पर्यावरण के आधार पर उचित प्रक्रिया शुरू होती है। The creator of Foreman does this और an example from his Anvil project your reference है।

संबंधित मुद्दे