2011-06-06 28 views
7

RVM của tôi được cài đặt dưới dạng root. Khi tôi đang cố gắng để bắt đầu ổ cắm lân, nó inRVM & Unicorn triển khai

[email protected]:~$ /etc/init.d/unicorn start 
Starting myapp app: /usr/bin/env: ruby: No such file or directory 
unicorn. 

Nhưng nếu tôi gõ

[email protected]:~$ ruby -v 
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] 

/usr/local/rvm/gems/ruby-1.9.2-p180/bin/unicorn con đường tồn tại.

cấu hình kỳ lân của tôi: https://gist.github.com/1010519

Trả lời

10

/etc/init.d/unicorn không biết nơi để tìm thấy Ruby vì nó được quản lý thông qua RVM. Thông thường, .bashrc hoặc tệp tương tự của bạn được thực hiện và thiết lập môi trường; điều này không xảy ra trong init script (hoặc có thể là bất cứ điều gì khác được thực thi bởi root).

Giải pháp là sử dụng trình bao bọc. Ví dụ, để tạo ra một nhị phân gọi là system_ruby đó tải lên môi trường RVM của 1.9.2p180 và sau đó thực hiện ruby, thực hiện như sau:

rvm wrapper ruby-1.9.2-p180 system ruby 

Để biết thêm thông tin và biết thêm chi tiết, hãy kiểm tra this answer of mine, vốn là biểu tương tự vấn đề.

+0

tôi thực hiện COMAND này và không có gì đã thay đổi. '/etc/init.d/unicorn start Khởi động ứng dụng DPP.cz.cc:/usr/bin/env: ruby: Không có tập tin hoặc thư mục như vậy unicorn.' – Kir

+0

Nếu bạn xây dựng một tập tin thực thi được gọi là' system_ruby' bạn sẽ cần để cập nhật tập lệnh '/ etc/init.d/unicorn' của bạn để sử dụng nó thay vì' ruby'. –

+0

Chỉ có đường dẫn đến unicorn.rb và nhị phân đơn. Làm thế nào để thay đổi '/ etc/init.d/unicorn' của tôi? Nó ở đây https://gist.github.com/1010519 – Kir

0

Loại: which ruby (hiển thị con đường ruby ​​bin) sau đó gõ này: ln -s (change_to_ruby_path) /usr/bin/env/ruby (xây dựng khả năng tiếp cận chính xác cho hệ thống của bạn)

1

liên kết mềm cũng làm việc,

which ruby<your version> 
ln-s /ruby/path/ruby<your version> /ruby/path/ruby 
0

tôi đã cùng một vấn đề và điều này đối với tôi

rvm --default use <version>