Làm cách nào để định cấu hình Ruby để sử dụng phiên bản gemet hoặc Ruby chính xác trên cơ sở từng dự án?


7

Tôi mở một thiết bị đầu cuối và điều hướng đến thư mục dự án của tôi (ví dụ cd /proj/tickecting_app:). Sau này tôi thực hiện lệnh này : rvm use ruby 1.9.x@gemset.

Tôi muốn lệnh này chạy nó mỗi khi tôi mở terminal.

Có cách nào để chạy cái này tự động không? Và để cụ thể hơn, tôi điều hướng đến các dự án khác nhau trong các tab riêng biệt.

Ví dụ:

  • Tab đầu tiên cd /proj/tickecting_appvà chạy rvm use ruby 1.9.x@gemset.
  • Tab thứ hai cd /proj/rss_feed_appvà chạy rvm use ruby 2.1.x@gemset.

Tôi muốn chạy các lệnh khác nhau tùy thuộc vào dự án. Điều này có thể không?


câu hỏi này không được sử dụng để làm thế nào để cấu hìnhRuby
mikeerv

Câu trả lời:


10

Nếu bạn đang sử dụng RVM thì đó chỉ là vấn đề đặt một tệp có tên .rvmrctrong thư mục dự án của bạn với nội dung sau:

rvm use ruby 1.9.x@gemset

Đối với dự án thứ hai của bạn là như vậy, chỉ cần thay đổi rvmlời mời.


5
Cảm ơn bạn đã cố gắng giải quyết vấn đề tiềm ẩn của OP.
Deer Hunter

@jabbrwcky nổi bật .... một huy hiệu riêng biệt nên được trao cho điều đó;)
beginer

Nếu tôi nhớ lại một cách chính xác, .rvmrckhông được chấp nhận. Sử dụng .ruby-gemset.ruby-versionthay vào đó.
Ajedi32

@ Ajedi32 Đối với tôi sử dụng phiên bản mới thay vì .rvmrckhông tự động chuyển sang dự án gemet. Chỉ cần tìm thấy điều này ngày hôm nay. : /
patrick

@pattulus Nó làm cho tôi ...
Ajedi32

6

Bí danh có thể được sử dụng cho bạn. Bạn có thể tạo aliascho từng thư mục cụ thể và lệnh bạn cần chạy. Vì vậy, đối với hai ví dụ bạn đã đưa ra sẽ là:

alias ticketapp='cd /proj/tickecting_app && rvm use ruby 1.9.x@gemset'

alias feedapp='cd /proj/rss_feed_app && rvm use ruby 2.1.x@gemset'

Vì vậy, lần tới bạn chỉ cần đưa ra alias(không cần phải đưa ra cd) tức là ticketappfeedapptrong trường hợp trên.

Để làm cho bí danh của bạn vĩnh viễn, chỉ cần:

vim ~ / .bashrc

và đưa ra các lệnh bí danh như trong .bashrctệp.


3
[mikeserv@localhost ~]$ PS1=$PS1'$(
    [ ${last_hist=\!} -ne \! ] && {
    h=$(history 1)
    [ -n "${h#"${h##* cd *}"}" ] &&    
    . ./.dircmd >&2 2>/dev/null        
})${0##*["$0"$((last_hist=\!))]*}'
[mikeserv@localhost ~]$ cd .
[mikeserv@localhost ~]$ 
[mikeserv@localhost ~]$ echo

[mikeserv@localhost ~]$ cat <<\DIRCMD >.dircmd
echo this is my home directory
> DIRCMD
[mikeserv@localhost ~]$ 
[mikeserv@localhost ~]$ echo

[mikeserv@localhost ~]$ cd .
this is my home directory
[mikeserv@localhost ~]$

Một cái gì đó như thế sẽ hoạt động cho một hệ thống POSIX - mặc dù tôi nghĩ chỉ bashyêu cầu \ dấu gạch chéo ngược trước! Bang như thế. bashdường như cũng cập nhật lịch sử theo cách không hoạt động fc- có thể mang theo - nhưng không hoạt động history. Trong các shell khác, history 1bit nên được trao đổi với fc -l -1nhưng bashnó là một lệnh phía sau, tôi đoán vậy. Đó là khá bực bội.

Dù sao, mỗi khi rút ra dấu nhắc, nó xác định biến $last_histlà số lịch sử cho lệnh cuối cùng. Nó thực hiện điều này trong trường khớp trên một thay thế tham số sẽ luôn luôn không có gì để không hiển thị trong lời nhắc.

Các fckiểm tra chỉ làm cho chắc chắn rằng số lịch sử cuối cùng thực sự tăng lên - như trong, bạn không chỉ nhấn Enter hoặc bất cứ điều gì. Nó cũng kiểm tra lệnh cuối cùng là a cd. Nếu cả hai đều đúng, nó sẽ cố gắng tìm .một tệp trong thư mục hiện tại có tên .dircmd. Nếu nó tồn tại, nó chạy. Nếu không, oh tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.