2013-01-13 19 views
18

"cách thức quản đốc" cho hành vi khác nhau trong sản xuất vs phát triển là gì? Đó là chúng tôi muốn người quản đốc bắt đầu một loạt các công cụ trong dev, tuy nhiên trong sản xuất heroku chúng tôi không cần nó để bắt đầu (ví dụ) solr.phát triển quản đốc và sản xuất (đường ray)

Trả lời

3

Foreman lấy đối số để sử dụng tệp (-d) và đối số khác để chỉ định những gì cần chạy. Nó cũng hỗ trợ tệp .foreman cho phép các arg đó trở thành mặc định. Xem http://ddollar.github.com/foreman/ để biết thêm thông tin

22

Tôi tuân theo quy ước;

  • Procfile định nghĩa tất cả quá trình
  • .foreman thiết lập các biến đốc cụ thể

Phát triển:

  • .env biến bộ môi trường cho mỗi nhà phát triển
  • .env.example s giá trị mặc định ETS phát triển
  • foreman start bắt đầu tất cả các quá trình

sản xuất:

  • heroku config biến bộ môi trường
  • heroku ps:scale bật hoặc tắt bất cứ các quy trình cần thiết cho việc sản xuất

Dưới đây là một ví dụ từ một dự án.

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

Trước đây tôi đã sử dụng Procfile của môi trường cụ thể, điều này khá đơn giản và hoạt động tốt.

Về cơ bản bạn có Procfile.development, Procfile.production, vv Trong mỗi bạn có thể tùy chỉnh procs bạn muốn bắt đầu, sau đó chạy chúng thông qua foreman như vậy:

foreman start -f Procfile.development 

Một cách khác là để tham khảo kịch bản trong Procfile của bạn, và trong mỗi kịch bản khởi động quá trình thích hợp dựa trên môi trường. The creator of Foreman does this và có an example from his Anvil project your reference.