2010-11-20 37 views
11

Tôi đã xây dựng Ruby 1.9.2 trên Snow Leopard theo cách thủ công. Bây giờ tôi không thể tìm thấy các tệp GEM cũ của mình. Tôi đoán họ đang ở một con đường khác bây giờ hay gì đó. Vì vậy, tôi có ba câu hỏi:Các GEM ở đâu khi Ruby được biên dịch thủ công trong Mac OS X 10.6.8?

  • Đường dẫn đá quý "cũ", trong đó gem install sinatra đặt đá quý sinatra là gì?
  • Đường dẫn đá quý "mới", được đặt khi tôi xây dựng Ruby theo cách thủ công?
  • Làm thế nào để thay đổi nó để Ruby tìm thấy đá quý của tôi một lần nữa?

Trả lời

3

Tôi tin rằng đá quý tiêu chuẩn cài đặt đường dẫn trên OS X là:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/ 
+0

Ok, làm thế nào tôi có thể di chuyển những viên đá quý đó hoặc yêu cầu Ruby sử dụng đường dẫn cũ? – MrB

+0

Thực ra họ đang ở ba địa điểm. Xem phản hồi của tôi cho các giá trị mặc định. –

+0

@MrB Nhiều đá quý từ 1.8 nên được cài đặt lại dưới 1,9. – Phrogz

32

gem env (Sử dụng Ruby cũ của bạn cài đặt lệnh ngọc của) tại dấu nhắc lệnh cho một cái gì đó tương tự như:

> RubyGems Environment: 
> - RUBYGEMS VERSION: 1.3.6 
> - RUBY VERSION: 1.9.1 (2009-07-16 patchlevel 243) [i386-mingw32] 
> - INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1 
> - RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe 
> - EXECUTABLE DIRECTORY: C:/Ruby19/bin 
> - RUBYGEMS PLATFORMS: 
>  - ruby 
>  - x86-mingw32 
> - GEM PATHS: 
>  - C:/Ruby19/lib/ruby/gems/1.9.1 
>  - C:/Users/Username/.gem/ruby/1.9.1 
> - GEM CONFIGURATION: 
>  - :update_sources => true 
>  - :verbose => true 
>  - :benchmark => false 
>  - :backtrace => false 
>  - :bulk_threshold => 1000 
> - REMOTE SOURCES: 
>  - http://rubygems.org/ 

(Trên Windows ... Tôi tưởng tượng Snow Leopard sẽ có định dạng tương tự)

Trường GEM PATHS là int điều đáng sợ ở đây. Nếu bạn đi đến các thư mục được liệt kê, bạn sẽ thấy một thư mục có tên là bộ nhớ cache. Điều đó sẽ chứa một danh sách các file .gem tương ứng với tất cả các gem được cài đặt trong thư mục cụ thể đó. Bạn chỉ có thể gọi số gem install *gemname* trên mỗi tệp đá quý đó (sử dụng lệnh gem mới cài đặt của Ruby Ruby).

CHỈNH SỬA: Lỗi được gọi là CÀI ĐẶT LẮP ĐẶT thay vì GEM PATHS. Greg nhắc tôi rằng có nhiều địa điểm được biết đến bởi một cài đặt cụ thể của Rubygems. Tất cả các vị trí đó cần phải được kiểm tra cho các đá quý được cài đặt bởi Ruby.

+0

Tôi không chắc chắn về hành vi của Rubygem đối với các phụ thuộc khi cài đặt từ một tệp .gem cục bộ. Bạn có thể muốn bao gồm cờ --ignore-dependencies để tránh việc kéo các phụ thuộc từ một nguồn từ xa (vì có lẽ bạn đã có tất cả các phụ thuộc cần thiết cục bộ). –

+1

Cấu hình Windows Gem không giống với Snow Leopard, bởi vì Apple định cấu hình các vị trí mặc định và muốn có đá quý riêng của họ, cộng với đá quý của người dùng, cộng với đá quý của người dùng 'sudo'. Microsoft không bao gồm Ruby vì vậy nó là trình cài đặt Ruby cho Windows xác định vị trí. –

+0

@Greg: Bất kể ai xác định vị trí cài đặt, Rubygems có biết vị trí đó ở đâu không? Xin lỗi nếu tôi ở ngoài lĩnh vực tri thức của tôi ở đây; Tôi giả định Rubygems sẽ làm việc tương tự trên tất cả các hệ điều hành được hỗ trợ. –

7

Đá quý "cũ" của bạn sẽ liên quan đến Ruby đi kèm với máy Mac vì lệnh gem được bao gồm trong Ruby 1.8.7, là cổ phiếu trên Snow Leopard. Nếu bạn which ruby lãm /usr/bin/ruby, môi trường đá quý của bạn nên được tương tự như:

- GEM PATHS: 
    - /Library/Ruby/Gems/1.8 
    - /Users/greg/.gem/ruby/1.8 
    - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 

Nếu bạn đang sử dụng RVM bạn thể có thể cho biết nó để copy your gems từ system gemset một dưới sự kiểm soát của RVM. Tôi đã không cố gắng làm điều đó khi tôi cài đặt RVM ngay lập tức và để cho nó xử lý tất cả các cài đặt Ruby của tôi và sau đó tôi bỏ qua cài đặt của hệ thống.

Nếu which ruby hiển thị /usr/local/bin/ruby thì lệnh gem env sẽ phản ánh đường dẫn đã thay đổi cho phiên bản bạn đã biên dịch từ nguồn.

tôi tò mò TẠI SAO bạn sẽ xây dựng nó bằng tay, khi RVM có sẵn để xử lý tất cả các configuration and installation, và chủ yếu là loại bỏ bất kỳ mối quan tâm về nơi điều được và cho dù bạn vừa dẫm lên phiên bản cài đặt của hệ thống .

Khi RVM đã cài đặt phiên bản Ruby, tất cả sẽ ở trong số ~/.rvm và Đá quý của bạn sẽ được định vị độc đáo ở đó. Bạn sẽ có thể manage the gemsgemsets, liên quan đến từng phiên bản của Ruby và chuyển đổi qua lại ngay lập tức.Hoặc, thậm chí tốt hơn, bạn có thể chạy một lệnh/chương trình trong mỗi phiên bản Ruby bạn đã cài đặt để kiểm tra chúng bằng cách sử dụng rvm ruby 'some command'.

Thông báo ở trên gem env đầu ra rằng đá quý nằm trong ba khu vực riêng biệt trên đĩa. Dưới sự kiểm soát của RVM, họ đang ở trong hộp cát của RVM:

- GEM PATHS: 
    - /Users/greg/.rvm/gems/ruby-1.9.2-p0 
    - /Users/greg/.rvm/gems/[email protected] 

Điều đó làm cho nó trở nên tầm thường khi tôi sao lưu chúng hoặc thổi bay đi nếu tôi muốn.

Tôi đã sử dụng để biên dịch hồng ngọc của mình từ nguồn trên máy Mac và các hộp Linux. Tôi sử dụng RVM cho điều đó ngay bây giờ. Nó tốt hơn nhiều so với làm nó bằng tay.

Các vấn đề liên quan