2010-09-06 22 views
5

Mỗi khi tôi khởi động ứng dụng Rails, tôi nhận được LoadError với đầu ra sau.Rubygems. LoadError in Rails

On Rails 2.3.8:

 
no such file to load -- sqlite3/sqlite3_native 
<internal:lib/rubygems/custom_require>:29:in `require' 

On Rails 3.0.0:

 
no such file to load -- bundler 
<internal:lib/rubygems/custom_require>:29:in `require' 

tôi chạy các ứng dụng trong các phương thức sản xuất trên một máy phát triển sử dụng Nginx + hành khách.

Lý do của sự cố này là gì? Làm thế nào tôi có thể giải quyết nó?

Cảm ơn.

Debian GNU/Linux 5.0.6;

Ruby 1.9.2;

Rubygems 1.3.7;

Ruby on Rails 2.3.8, 3.0.0;

Nginx 0.8.50;

Hành khách 2.2.15;

sqlite3-ruby 1.3.1;

gói 1.0.0.rc.6.

Updated


Tất cả các đá quý của tôi được cài đặt bởi người sử dụng không có đặc quyền trong thư mục địa phương /home/<usernam>/.gem. Nếu nó giúp, đây là gem env đầu ra:

 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.7 
    - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux] 
    - INSTALLATION DIRECTORY: /home/<username>/.gem 
    - RUBY EXECUTABLE: /usr/local/bin/ruby 
    - EXECUTABLE DIRECTORY: /home/<username>/.gem/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-linux 
    - GEM PATHS: 
    - /home/<username>/.gem 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "gem" => "--no-ri --no-rdoc" 
    - :gemhome => "/home/<username>/.gem" 
    - :gempath => ["/home/<username>/.gem"] 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

Cập nhật


tôi giải quyết với vấn đề này. Nguồn của nó là Tôi đã xác định đường dẫn đá quý tùy chỉnh. Đó là tôi được thêm vào các tập tin ~/.gemrc các dòng sau:

 
:gemhome: /home/<username>/.gem 
:gempaths: 
    - /home/<username>/.gem 

Vì vậy tất cả đá quý của tôi được đặt trong thư mục được chỉ định nhưng không được đặt mặc định. Vì một số lý do, Rubygems không tìm thấy nó ở đó và đã có một ngoại lệ.

Khi tôi xóa các dòng đó khỏi tệp, đường dẫn mặc định được đặt cho Rubygems và sau khi tôi cài đặt tất cả các đá quý cần thiết và các ứng dụng Rails đã tải của tôi đều bắt đầu hoạt động.

Một lần nữa, các điều kiện lỗi là:

  1. Nginx + hành khách;
  2. Gempath được đặt thành /home/<unprivileged_user>/.gem trong ~/.gemrc;
  3. An init.d tập lệnh được đọc và thêm vào trình tự khởi động (update-rc.d nginx defaults);
  4. Hệ thống được khởi động lại, máy chủ được khởi động atomaticlally;
  5. http://localhost/my_rails_app;
  6. LoadError; không tải tệp như vậy - < gem_name >; < nội bộ: lib/rubygems/custom_require >: 29: in `require '.

Tại sao Rubygems không thể tìm thấy đá quý ở vị trí tùy chỉnh nhưng có thể tìm thấy chúng theo mặc định? Đó là câu hỏi.

Trả lời

0

Kiểm tra hệ thống của bạn để xác định vị trí đá quý và đá quý của bạn được cài đặt (bạn có thể làm điều này bằng "ruby" và "đá quý nào"). Thông thường, chúng được cài đặt trong cùng một thư mục (/ usr/bin hoặc/usr/local). Nếu chúng ở các vị trí khác nhau, có thể có lỗi tải. Chỉ là một gợi ý.

+0

Sudo không liên quan gì đến việc cài đặt và không có gì ở đây ngụ ý rằng anh ta đang sử dụng hệ thống sử dụng sudo (tức là Ubuntu, vì hầu hết những người khác sử dụng su). – alternative

+0

Họ đang ở cùng một thư mục ('/ usr/local/bin'). – Shamaoke

2

Tôi cũng gặp vấn đề này khi sử dụng RVM - tôi phải chỉ định một gemset hoặc một cái gì đó và không làm cho nó dự án cụ thể. Ở mức nào, hãy đọc số rvm guide nếu bạn muốn biết những điều cơ bản về RVM và cố gắng chỉ định một gemset mới cho thư mục/dự án hiện tại của bạn, cài đặt một gem mới cho gemset đó, và sau đó sử dụng gemset đó. Ví dụ, để tạo ra một gemset mới cho đường ray phiên bản 2.3.8:


$ RVM gemset tạo rails238


$ RVM [email protected]


$ gem install rails -v 2.3.8


Sau đó, nếu tất cả đã đi theo kế hoạch loại rvm gemset sử dụng [gemsetName], hoặc làm rvm gemset list để xem danh sách các gemets đã cài đặt, và để xem ray có hoạt động tốt hay không, và bạn sẽ thấy đường ray 2.3.8

+0

OP không cho biết họ đang sử dụng RVM. Không phải lúc nào cũng có thể sử dụng RVM trên máy chủ sản xuất. – Jits

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