2010-05-09 35 views
20

Tôi tìm thấy một số vấn đề tương tự ở đây trên SO, nhưng không ai có vẻ phù hợp với trường hợp của tôi (xin lỗi nếu tôi bỏ qua). Đây là vấn đề của tôi: Tôi đã cài đặt đá quý oauth-plugin để đá quý ruby ​​dir, nhưng cố gắng sử dụng nó trong ứng dụng đường ray cho tôi biết rằng nó không được tìm thấy. Dưới đây là đầu ra của các lệnh liên quan:ruby ​​đá quý không tìm thấy mặc dù nó được cài đặt

Lắp đặt

% s gem install oauth-plugin 
Successfully installed oauth-plugin-0.3.14 
1 gem installed 
Installing ri documentation for oauth-plugin-0.3.14... 
Installing RDoc documentation for oauth-plugin-0.3.14... 

gem which oauth-plugin đầu ra:

% gem which oauth-plugin 
/usr/lib/ruby/gems/1.8/gems/oauth-plugin-0.3.14/lib/oauth-plugin.rb 

gem env đầu ra:

% gem env 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.6 
    - RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0] 
    - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 
    - RUBY EXECUTABLE: /usr/bin/ruby 
    - EXECUTABLE DIRECTORY: /usr/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-darwin-10 
    - GEM PATHS: 
    - /usr/lib/ruby/gems/1.8 
    - /Users/eimantas/.gem/ruby/1.8 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => true 
    - :bulk_threshold => 1000 
    - :gem => ["--no-ri", "--no-rdoc"] 
    - :sources => ["http://gems.ruby.lt/", "http://rubygems.org/"] 
    - REMOTE SOURCES: 
    - http://gems.ruby.lt/ 
    - http://rubygems.org/ 

Làm ls -l /usr/lib/ruby cho thấy điều này:

% ls -l /usr/lib/ruby  
lrwxr-xr-x 1 root wheel 76 Aug 14 2009 /usr/lib/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/lib/ruby 

Và đá quý được đề cập ở vị trí dự định.

Đây là lỗi mà đường ray cho tôi khi tôi cố gắng chạy $ rake spec

Missing these required gems: 
    oauth-plugin = 0.3.14 

You're running: 
    ruby 1.8.7.173 at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 
    rubygems 1.3.6 at /Users/eimantas/.gem/ruby/1.8, /Library/Ruby/Gems/1.8, /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 

Run `rake gems:install` to install the missing gems. 

Đây không phải là một viên ngọc duy nhất không được tìm thấy bằng cách rubygems (mặc dù nó nằm ở đâu đó nên có). Bất kỳ hướng dẫn nào đối với giải pháp đều được đánh giá cao.

+0

Bạn có thể đăng thông báo lỗi mà Rails đang cung cấp cho bạn không? –

Trả lời

22

Bạn đã cài đặt hai phiên bản Ruby khác nhau. Đầu tiên là ở:

/usr/bin/ruby ​​

và thứ hai là trong:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Vấn đề là một trong những được sử dụng trong dòng lệnh (tức là để cài đặt đá quý) và một được sử dụng bởi máy chủ web để chạy Rails.

Vì máy chủ web của bạn đang sử dụng phiên bản Ruby thứ hai, một giải pháp sẽ là cài đặt gem sử dụng phiên bản Ruby đó. Ngoài ra, bạn có thể nói với máy chủ web của bạn để sử dụng phiên bản Ruby khác nhau - tùy thuộc vào máy chủ bạn đang sử dụng này có thể đạt được theo những cách khác nhau.

+1

Bạn có thể làm được điều gì đó giống như: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem install oauth- plugin để cài đặt gem sử dụng máy chủ web Phiên bản Ruby –

+0

từ ls -l/usr/lib/ruby ​​có vẻ như hai phiên bản mà bạn đang nói đến là giống nhau – tommasop

+1

Bạn đã đúng. Hai thư mục này đã cài đặt ruby ​​khác nhau: '%/usr/bin/ruby ​​-v ruby ​​1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0] % /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ ruby -v ruby ​​1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10. 0] ' Vì vậy, nếu tôi xóa một trong' Ruby.framework' và đặt một liên kết tượng trưng đến cái đầu tiên tôi nên là tốt. – Eimantas

0

Các bạn đã thử:

require 'rubygems' 
+0

Có. Nó không hoạt động. – Eimantas

2

Bạn có trước đây cài đặt oauth?

gem install oauth 

Có vẻ như đó là needed

EDIT:

On của bạn

gem env 

bạn có

RUBY VERSION: 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin10.2.0] 

Nhưng nếu bạn nhìn vào lỗi, nó cho biết bạn đang chạy

ruby 1.8.7.173 

Bạn đang trỏ đến các phiên bản khác nhau của ruby?

+0

hmm .. đây phải là nguyên nhân mặc dù tôi không hiểu tại sao lệnh gem cài đặt đá quý ở một vị trí và sau đó ruby ​​trên đường ray khác nhau (tôi chắc chắn tôi chỉ có một phiên bản ruby ​​trong hệ thống của tôi). – Eimantas

+0

Điều gì về "sudo" đá quý cài đặt? Anh ta có hai điểm khác biệt GEM_HOME? – microspino

1

Điều đầu tiên trước tiên: Bạn có dòng config.gem 'oauth-plugin' trong tệp config/environment.rb của mình không?

Nếu vậy, hãy thử chạy script/console và gõ system("gem which oauth-plugin")

con đường đá quý của bạn có thể nó là điều sai lầm từ bên trong ứng dụng ray của bạn. Lệnh trên sẽ cho bạn biết nếu đá quý thực sự được tìm thấy bởi đường ray.

Nếu nó không được tìm thấy, hãy thử system("gem env") từ script/console và xem có bất cứ điều gì nhảy ra ngoài với bạn hay không. Điều này sẽ giúp gỡ lỗi.

+0

Tôi có config.gem 'oauth-plugin' trong môi trường của tôi.rb, nhưng khi dòng đó xuất hiện - tôi không thể chạy ./script/console vì phụ thuộc đá quý không được satisifed. (Nhưng nếu tôi nhận xét nó ra và chạy hệ thống 'đá quý mà ...' tôi có được đường dẫn chính xác đến đá quý – Eimantas

2

Chỉ cần cố gắng

sudo update-alternatives --config ruby 

và chọn phiên bản ruby ​​khác. Đã làm cho tôi.

0

Trên cửa sổ 7, sử dụng rubyinstaller, tôi đã chọn hộp kiểm thứ hai tạo ruby ​​có sẵn ở mọi nơi, nghĩa là bạn không phải định cấu hình bất kỳ đường dẫn nào đến phiên bản ruby ​​bạn đã cài đặt. Nó có thể ảnh hưởng đến các phiên bản khác của ruby ​​hoặc các dự án khác nếu bạn có nhiều môi trường dev.

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