Vì vậy, tôi đang viết một viên đá quý nhỏ và tôi có một '/ nhiệm vụ' dir trong đó với một số nhiệm vụ cào cụ thể. Làm cách nào để tôi thực hiện các tác vụ đó tự động ở mọi nơi, trong đó đá quý là bắt buộc? Ví dụ tôi muốn tôi có thể chạy 'rake mygemrake: task' bên trong thư mục gốc của đường ray sau khi đã cài đặt gem.Làm cho rake nhiệm vụ từ đá quý có sẵn ở khắp mọi nơi?
Trả lời
Kiểm tra rdoctask trong cào để biết ví dụ về cách xác định tác vụ do đá quý cung cấp. Nhiệm vụ được định nghĩa trong ruby thay vì cào xây dựng ngôn ngữ và có thể được yêu cầu như vậy:
require 'rake' # the gem
require 'rake/rdoctask' # the task
Đó là Sake là để làm gì. Datamapper và Merb đã sử dụng Sake với thành công.
Bạn phải nhập các tác vụ đó vào Rakefile của ứng dụng. Đây là cách nó sẽ tìm trong mỏ (Tôi đang sử dụng để quản lý bundler08 đá quý của tôi):
%w(gem1 gem2 gem3).each do |g|
Dir[File.dirname(__FILE__) + "/vendor/bundler_gems/**/#{g}*/tasks/*.rake"].each do |f|
import f
end
end
Đối với các ứng dụng Rails3, bạn có thể muốn xem xét thực hiện một Railtie cho đá quý của bạn.
Bạn có thể làm như vậy với:
lib/your_gem/railtie.rb
require 'your_gem'
require 'rails'
module YourGem
class Railtie < Rails::Railtie
rake_tasks do
require 'path/to/rake.task'
end
end
end
lib/your_gem.rb
module YourGem
require "lib/your_gem/railtie" if defined?(Rails)
end
Mặc dù, tôi đã chia sẻ của tôi khó khăn khi yêu cầu tệp rake.task
trong số railtie.rb
của tôi. Tôi đã chọn chỉ xác định một hoặc hai nhiệm vụ của tôi trong khối rake_tasks
.
Bạn có thể viết công việc cào bình thường đối với một viên ngọc và tải chúng như thế này:
require 'rake'
load 'path/to/your/tasks.rake'
Ngoài ra, hãy nhìn vào thor vs. rake.
- 1. Tại sao "android:" ở khắp mọi nơi?
- 2. Chức năng Java (phương pháp) có sẵn ở khắp mọi nơi (toàn cầu)
- 3. bao gồm các nhiệm vụ cào trong đá quý
- 4. Qt :: WA_TranslucentBackground có sẵn ở mọi nơi?
- 5. Rake: nhiệm vụ tương đương ở Django
- 6. Yêu cầu một viên đá quý bên trong nhiệm vụ cào của đá quý
- 7. Tôi cập nhật đá quý ruby, và bây giờ tôi nhận được lỗi phân tích cú pháp cây và cảnh báo ngừng sử dụng ở khắp mọi nơi!
- 8. Có cách nào để tránh $ this-> ở khắp mọi nơi không?
- 9. Kiểm tra Nhiệm vụ Rake
- 10. Đá quý ruby của tôi ở đâu?
- 11. Rails ngoại lệ thông báo trong các nhiệm vụ rake
- 12. Tìm ở khắp mọi nơi một enum được chuyển thành chuỗi
- 13. ActiveRecord :: ConnectionNotEstablished trong một nhiệm vụ rake
- 14. Rake nhiệm vụ w/lập luận splat
- 15. đá quý cào: lỗi refresh_specs về đá quý chưa giải nén
- 16. RVM xem đá quý trong đá quý
- 17. Bundler cài đặt đá quý ở vị trí sai
- 18. Làm thế nào để cấu hình nhiệm vụ Rake?
- 19. 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
- 20. đá quý Unpacking [Rails 2.3.5]
- 21. Làm thế nào để tải lại đá quý cho mọi yêu cầu trong Rails 3.2?
- 22. Rake nhiệm vụ trong các tập tin khác
- 23. Lợi ích của thiết kế không cần thiết là gì nếu bạn cần xóa các khối ở khắp mọi nơi?
- 24. Truy cập Rake Tác vụ Mô tả từ bên trong Nhiệm vụ
- 25. Nhiệm vụ Rake để thêm dữ liệu mặc định
- 26. Cách kiểm tra đá quý sẵn sàng cập nhật?
- 27. tiêm tấn công (Tôi nghĩ rằng tôi đã được bảo vệ!) <? Php/**/eval (base64_decode (ở khắp mọi nơi
- 28. "Private" nhiệm vụ Rake với môi trường Rails
- 29. Tại sao nội dung công việc chính sách an ninh của tôi ở khắp mọi nơi nhưng Safari
- 30. Mã nguồn của các nhiệm vụ Rake trong Rails 3 ở đâu?
Chỉ một lời cảnh báo, tôi không thể yêu cầu Rails yêu cầu các tác vụ 'rake' với phần mở rộng' .rake' bằng phương pháp này. –
Tôi nghĩ rằng tôi nhớ lỗi này giống như được mô tả ở đây: http://blog.smartlogicsolutions.com/2009/05/26/including-external-rake-files-in-your-projects-rakefile-keep -your-rake-tasks-held/ có lẽ sử dụng 'import' thay vì' require' là chìa khóa để thành công? Tôi sẽ đào sâu vào cơ hội tiếp theo này, tôi nhận được một khoảnh khắc miễn phí :) –
Những gì tôi đã làm là sử dụng '.rb' để thay thế. Đã giải quyết được sự cố. :) –