Động cơ thật tuyệt vời !! Chắc chắn nhìn vào liên kết Jamie được cung cấp trong câu trả lời của mình .. đó là một điểm khởi đầu tốt. Động cơ là cách để đi với Rails 3. Tôi cảm thấy rằng nó là một trong những tính năng mạnh mẽ nhất của khung công tác, và tôi đã chuyển đổi hầu hết các chức năng phổ biến trong ứng dụng của tôi thành công cụ. CNTT giúp bạn tiết kiệm rất nhiều thời gian nếu bạn đang tạo nhiều ứng dụng. Đây là luồng công việc hiện tại của tôi khi tạo công cụ:
Bước 1:gem install jeweler
nếu bạn không có. Sau đó tạo ra một viên đá quý trống bằng cách sử dụng jeweler.
Bước 2: cập nhật Rakefile được cung cấp bởi thợ kim hoàn với thông tin đá quý của bạn và bất kỳ phụ thuộc nào. Bạn có thể cần phải thêm một filelist để gemspec có thể trỏ đến các tập tin chính xác, và loại trừ bất kỳ tập tin bạn không muốn khi bạn xây dựng nó.
gem.files = FileList['lib/**/*.rb','[A-Z]*', 'lib/**/**/*'].to_a
Bước 3: Thêm cấu trúc của bạn Rails ứng dụng - app/controllers, app/views, vv .. vào thư mục cấp cao nhất trong các đá quý. Bạn cũng có thể bao gồm/config thư mục cho routes.rb của bạn sẽ được nối vào các tuyến ứng dụng chính của bạn.
Bước 4: Thiết lập thư mục lib của bạn như thế này:
/lib/your_engine_name.rb (yêu cầu engine.rb trong tập tin này và bất kỳ file khác trong lib mà bạn cần) /lib/your_engine_name/
/lib/your_engine_name/engine.rb
Bước 5: Thêm mã để engine.rb:
require 'your_engine_name'
require 'rails'
module YourEngineName
class Engine < Rails::Engine
#load rake tasks go here
#initializers go here
end
end
Bước 6: Thêm tất cả các mã động cơ tùy chỉnh của bạn để ứng dụng/* và lib/your_engine_name/
Bước 7: Xây dựng viên ngọc sử dụng "cào xây dựng".Bạn phải làm điều này để Bundler có thể xem các tệp của bạn trong gemspec (được tạo khi bạn xây dựng) ở bướC# 8
Bước 8: Để tham chiếu thử nghiệm cục bộ trong Gemfile của ứng dụng chính nơi bạn muốn bao gồm động cơ:
#Gemfile
gem "your_engine_name", :require => "your_engine_name", :path => "/your_engines/your_engine_name"
Bước 9: bó cài đặt và khởi động máy chủ ứng dụng tại địa phương.
Bước 10: Vì bạn đang tham khảo các đường địa phương, bạn có thể thay đổi các đá quý và xem chúng trong ứng dụng chính của bạn mà không cần xây dựng lại (trừ khi bạn cần thêm các tập tin mới cho gemspec)
Bước 11: đặt nguồn đá quý vào github để bạn có thể sử dụng nó trong sản phẩm. Làm cho việc sử dụng các công việc trang sức rake. Tôi kết hợp một số nhiệm vụ cào như thế này để làm git push và thẻ trong các bước tương tự và bao gồm chúng trong Rakefile của động cơ:
namespace :version do
desc "create a new version, create tag and push to github"
task :github_and_tag do
Rake::Task['github:release'].invoke
Rake::Task['git:release'].invoke
end
desc "bump patch push to github"
task :patch_release do
Rake::Task['version:bump:patch'].invoke
Rake::Task['version:github_and_tag'].invoke
end
desc "bump minor push to github"
task :minor_release do
Rake::Task['version:bump:minor'].invoke
Rake::Task['version:github_and_tag'].invoke
end
desc "bump major push to github"
task :major_release do
Rake::Task['version:bump:major'].invoke
Rake::Task['version:github_and_tag'].invoke
end
end
Bước 12: Khi triển khai vào sản xuất, thay đổi nguồn trong Gemfile để GitHub và tham khảo một thẻ phiên bản:
gem 'your_engine_name', :git => '[email protected]:yourusername/your_engine_name.git', :tag=>"v1.1.1"
tôi đang sử dụng hack này để tham khảo 2 nguồn đá quý trong Gemfile cho đến khi họ thêm tính năng đó để Bundler: http://www.cowboycoded.com/2010/08/10/using-2-sources-for-a-gem-in-different-environments-with-bundler/
Hãy cho tôi biết nếu bạn có bất kỳ vấn đề với điều này. Tôi đang làm việc trên một bài đăng trên blog để hiển thị điều này chi tiết hơn và tôi có thể đã bỏ sót một vài điều .. chỉ cần viết điều này ra khỏi đầu của tôi ngay bây giờ ..
Thú vị! Tôi sẽ xem xét nó. Chúc mừng! – Erik