Tôi đã có một máy chủ dàn dựng với cả Ruby và Ruby Enterprise chuẩn được cài đặt. Theo tiêu chuẩn Ruby từ chối cài đặt một gem quan trọng, tôi cần thiết lập $ PATH sao cho ruby / gem/rake/etc. luôn luôn tham khảo các phiên bản REE. Và kể từ khi tôi sử dụng Capistrano để triển khai cho các máy của chúng tôi, tôi cần phải làm điều đó trong Capistrano.Capistrano: Tôi có thể đặt biến môi trường cho toàn bộ phiên làm việc không?
Làm cách nào để đặt biến môi trường một lần và có thể tồn tại trong suốt phiên Capistrano?
1) Dễ dàng thực hiện trong các tệp bashrc, nhưng Capistrano không đọc tệp bashrc.
2) Tôi muốn sử dụng Capistrano của
default_environment['PATH'] = 'Whatever'
nhưng Capistrano sử dụng các biến môi trường như
env PATH=Whatever command arg ...
và họ đang bị mất bất cứ khi nào vỏ khác được kéo thành sợi lên trong thực thi thông qua với ENV. Giống như khi bạn sử dụng sudo. Đó là khá quan trọng:
[[email protected] trunk]$ env VAR=hello ruby -e "puts ENV['VAR']"
hello
[[email protected] trunk]$ env VAR=hello sudo ruby -e "puts ENV['VAR']"
nil
3) Và tôi không thể sử dụng lệnh xuất khẩu bash, vì đây là những mất quá - Capistrano dường như bắt đầu lên một cái vỏ mới cho mỗi lệnh (hoặc một cái gì đó như thế), và đó là bị mất, quá:
cap> export MYVAR=12
[establishing connection(s) to xxx.xxx.xxx.xxx]
cap> echo $MYVAR
** [out :: xxx.xxx.xxx.xxx]
cap>
4) tôi đã thử rối tung với Capistrano của: vỏ và: tùy chọn pty cũng (và kết hợp với các phương pháp khác), nhưng không có may mắn đó, một trong hai.
Vì vậy - cách thích hợp để thực hiện việc này là gì? Điều này có vẻ như một nhiệm vụ cơ bản như vậy nên có một cách thực sự đơn giản để thực hiện nó, nhưng tôi không có ý tưởng. Bất kỳ ai?
Cảm ơn trước!
Cuộc gọi tốt - Tôi không biết rằng sudo che khuất môi trường cục bộ. Có vẻ như chỉ cần thêm tùy chọn -E sửa chữa hầu hết các trường hợp, nhưng $ PATH là đặc biệt ([tham khảo] (http://stackoverflow.com/questions/257616/sudo-changes-path-why)). Tôi sẽ chơi xung quanh với điều này nhiều hơn một chút và lấy lại cho bạn. Chúc mừng! –