Có cách nào để biết đường dẫn gốc của đá quý của tôi không? Tôi đang cố gắng để tải một cấu hình mặc định từ một yaml bên trong đường dẫn đá quý. Làm thế nào để có được thư mục gốc đá quý với ruby?Tìm gốc đá quý
Trả lời
Với cơ cấu dự án sau:
your_gem/
lib/
your_gem.rb
Đây là cách tôi sẽ làm điều đó:
# your_gem.rb
module YourGem
def self.root
File.expand_path '../..', __FILE__
end
end
Ruby 2.0 đã giới thiệu phương pháp Kernel#__dir__
; nó cho phép một giải pháp ngắn hơn đáng kể:
# your_gem.rb
module YourGem
def self.root
File.dirname __dir__
end
end
Nếu bạn cần truy cập vào các thư mục khác, bạn chỉ có thể xây dựng dựa trên root
:
module YourGem
def self.bin
File.join root, 'bin'
end
def self.lib
File.join root, 'lib'
end
end
gem list <gem> -d
Hoặc nếu bạn đang sử dụng bundler:
bundle show <gem>
Trong chính đá quý: tôi đang cố gọi File.load. Gốc đá quý là gì? –
Đây là một giải pháp chung cho thực thi và libs. Nó tải đặc điểm kỹ thuật bằng cách sử dụng API Gem, do đó, đường dẫn luôn chính xác:
spec = Gem::Specification.find_by_name("your_gem_name")
gem_root = spec.gem_dir
yaml_obj = YAML.load(gem_root + "/file_name.yaml")
Sử dụng ['File.join'] (http://www.ruby-doc.org/core-2.1 .1/File.html # method-c-join) thay vì chuỗi nối. –
@MatheusMoreira tại sao nó quan trọng? –
'File.join' đảm bảo rằng bạn sử dụng dấu phân cách đường dẫn thích hợp cho Hệ điều hành của bạn, làm cho mã chéo platorm "/" là đặc trưng cho Linux Nhiều phiên bản (tất cả?) của Microsoft Windows sử dụng "\" –
- 1. RVM xem đá quý trong đá quý
- 2. Không thể xây dựng phần mở rộng gốc đá quý
- 3. đá quý mà không thể tìm thấy đá quý mặc dù nó đang được cài đặt
- 4. lỗi cài đặt đá quý rmagick trên RHEL - L ERI: Không thể xây dựng phần mở rộng gốc đá quý
- 5. Nguồn đá quý ruby tốt?
- 6. Đá quý ruby của tôi ở đâu?
- 7. Công cụ/đá quý để tìm mã nhận xét
- 8. không thể tìm thấy đường ray đá quý - Gem :: GemNotFoundException
- 9. rubymine - Không thể tìm thấy đá quý "jquery-rails"
- 10. Toolbelt cài đặt: Không thể tìm thấy đá quý Heroku
- 11. 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
- 12. Sau khi cài đặt đá quý ruby, chạy đá quý mới trả về lỗi "Không thể tìm thấy"
- 13. Làm thế nào để tôi tìm thấy đá quý phụ thuộc vào một đá quý nhất định?
- 14. 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
- 15. Đá quý toán học Ruby
- 16. Phiên trong đá quý Rails_API
- 17. đá quý Unpacking [Rails 2.3.5]
- 18. Đá quý thống kê Ruby
- 19. cảnh báo đá quý rmagick
- 20. Thiếu đá quý mysql2. Thêm nó vào Gemfile của bạn: đá quý 'mysql2'
- 21. sự khác biệt giữa 'json" đá quý và 'json_pure' đá quý là gì?
- 22. đá quý cài đặt đường ray LRI: Trong khi thực hiện đá quý ... (Errno :: EACCES)
- 23. đá quý cào: lỗi refresh_specs về đá quý chưa giải nén
- 24. Rvm và đá quý, danh sách bó và danh sách đá quý
- 25. RVM: Gỡ cài đặt tất cả đá quý của một viên đá quý
- 26. Yêu cầu một viên đá quý bên trong nhiệm vụ cào của đá quý
- 27. Ruby "Mail" tài liệu đá quý
- 28. của Ruby cài đặt đá quý lỗi
- 29. Đá quý CanCan cho MVC .NET
- 30. Cách chỉnh sửa đá quý tại Heroku
Làm việc cho tôi để tham khảo thư mục "tài liệu" của tôi được bao gồm như là một phần của gemspec, nơi sử dụng Rails.root.join ("tài liệu") mặc định không thành công. Cảm ơn! –
Tôi đang sử dụng ruby 2.0.0p0 (2013-02-24 revision 39474). 'File.dirname __dir__' không hoạt động đối với tôi. Tôi nhận được lỗi này: 'TypeError: không chuyển đổi ẩn nil thành String'. Xảy ra để biết tại sao? Cảm ơn. –
@ EE33, ['__dir__' được ghi lại để trả về' nil' nếu '__FILE__' cũng là' nil'] (http://www.ruby-doc.org/core-2.0.0/Kernel.html#method -i -__ dir__). Làm thế nào bạn đang chạy kịch bản của bạn? –