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à:
- Nginx + hành khách;
- Gempath được đặt thành
/home/<unprivileged_user>/.gem
trong~/.gemrc
; - 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
); - Hệ thống được khởi động lại, máy chủ được khởi động atomaticlally;
- http://localhost/my_rails_app;
- 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.
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
Họ đang ở cùng một thư mục ('/ usr/local/bin'). – Shamaoke