Tôi đã sử dụng Rails trong một thời gian và luôn sử dụng đá quý trong gemfile của mình, nhưng tôi chưa bao giờ thực sự hiểu được chức năng của đá quý mà tôi cài đặt thực sự trở nên sẵn có như thế nào. Giả sử tôi sử dụng đá quý has_permalinks (http://haspermalink.org/). Nó cung cấp phương thức .generate_permalink!
cho Mô hình của tôi. Phương thức này được xác định ở đâu? Làm thế nào đến chỉ tôi có thể sử dụng phương pháp này tất cả của một đột ngột chỉ bằng cách cài đặt đá quý? Có một số loại include
/require
/load
để khởi tạo mã của đá quý để nó có thể truy cập được vào phần còn lại của ứng dụng không? Ngoài ra, mã này được lưu trữ khi tôi cài đặt đá quý ở đâu?Rails + Gems (nói chung): Đá quý hoạt động như thế nào?
Trả lời
Tôi đã trả lời các câu hỏi của bạn một cách riêng biệt và không đúng thứ tự, nhưng tôi nghĩ nó thực sự có thể giúp bạn hiểu câu trả lời dễ dàng hơn theo thứ tự này.
Ngoài ra, mã này được lưu trữ khi tôi cài đặt đá quý ở đâu?
Nếu bạn đang sử dụng Bundler, bạn có thể làm bundle show has_permalink
và nó sẽ hiển thị cho bạn nơi đá quý đó được cài đặt. Dưới đây là một ví dụ về tôi làm việc đó với pg
đá quý:
✗ bundle show pg
/Users/jasonswett/.rvm/gems/[email protected]/gems/pg-0.11.0
đâu phương pháp này được xác định?
Nếu bạn làm điều bundle show
, nó trả về một đường dẫn - phương pháp được xác định ở đâu đó trong đó. (Bạn có thể sử dụng grep -r 'def generate_permalink' /gem/path
để tìm thấy chính xác nơi mà nếu bạn muốn.)
Tại sao chỉ tôi có thể sử dụng phương pháp này tất cả của một đột ngột chỉ bằng cách cài đặt viên ngọc? Có một số loại bao gồm/yêu cầu/tải để khởi tạo mã số đá quý để có thể truy cập được phần còn lại của ứng dụng không?
Nhìn vào phần này của doc về quá trình khởi Rails: http://guides.rubyonrails.org/initialization.html#config-boot-rb
Trong một ứng dụng Rails tiêu chuẩn, có một Gemfile mà tuyên bố tất cả phụ thuộc của ứng dụng. config/boot.rb đặt ENV ["BUNDLE_GEMFILE"] vào vị trí của tệp này, sau đó yêu cầu Bundler và gọi Bundler.setup thêm phụ thuộc của ứng dụng (bao gồm tất cả các phần Rails) vào đường dẫn tải, tạo chúng khả dụng cho ứng dụng để tải.
Dường như, khá sớm trong quá trình, Rails xem Gemfile của bạn và tải tất cả các đá quý của bạn qua Bundler. Vì vậy, có bao gồm của bạn.
- 1. Trình bundler hoạt động như thế nào (nói chung)?
- 2. đá quý Unpacking [Rails 2.3.5]
- 3. Rails Xung đột Paperclip giữa đá quý aws-s3 và đá quý right_aws. Giải quyết thế nào?
- 4. đá quý Rails Bundler cài đặt
- 5. Đá quý Heroku không hoạt động với RVM
- 6. Bundler không thể tìm thấy phiên bản của đá quý, nhưng cài đặt đá quý có cùng tên hoạt động
- 7. Trình bundler hoạt động như thế nào?
- 8. Rails 3.1- lỗi đá quý therubyracer
- 9. Kiểm tra Ruby Gems dưới Rails
- 10. Đá quý để theo dõi hoạt động của người dùng
- 11. Có đá quý nào giống như delay_job cho jruby không?
- 12. Làm thế nào để phát triển Gems?
- 13. Khởi động máy chủ mỏng mà không có viên đá quý mỏng không hoạt động
- 14. Cài đặt mysql2 đá quý cho Ruby on Rails 3.1.0
- 15. Ngã ba đá quý cho dự án Rails
- 16. Rails - Bất cứ khi nào đá quý - Năng động, giá trị
- 17. Mô hình Wicket hoạt động như thế nào với chung?
- 18. đá quý cài đặt đường ray LRI: Trong khi thực hiện đá quý ... (Errno :: EACCES)
- 19. cảnh báo đá quý rmagick
- 20. RVM xem đá quý trong đá quý
- 21. rubymine - Không thể tìm thấy đá quý "jquery-rails"
- 22. Thiếu đá quý mysql2. Thêm nó vào Gemfile của bạn: đá quý 'mysql2'
- 23. Chuyển biến cho Rails StateMachine chuyển đổi đá quý
- 24. Làm thế nào để tôi hoàn tác các nhà cung cấp/đá quý bó cài đặt
- 25. Xem mã nguồn của đá quý
- 26. Có Rails 2.3.x bỏ qua đá quý i18n
- 27. Sau khi cài đặt đá quý ruby, chạy đá quý mới trả về lỗi "Không thể tìm thấy"
- 28. Không thể tìm thấy đá quý 'jquery-rails (= 2.0.0) ruby' trong đá quý có sẵn trên máy này
- 29. Lỗi quyền đối với đá quý RVM
- 30. cách cài đặt gem hoạt động? làm thế nào đá quý có được các tập tin cài đặt?