2010-09-17 24 views
5
benim ilk Raylar 3 motorunu oluşturduğunuz çalışıyorum ve şu anda aşağıdaki hata iletisi alıyorum

Sorun yaratan Raylar 3 Motor

is a Railtie/Engine and cannot be installed as plugin (RuntimeError) 

sana Engine yapmıyorum biraz daha bilgi vermemiz gerekirse

bir mücevher olarak, ancak Engine dosyalarını satıcı/eklenti klasörüne yerleştirdim. Eklenti klasöründe yükleme ile ilgili bir sorun olduğunu biliyorum, ancak sorunu nasıl çözeceğimi açık değilim. Motorunda

Benim raylar/init.rb dosya

require 'rails' 

module RailsApp 
    module MyEngine 
    class Engine < Rails::Engine 

     config.after_initialize do 
     RailsApp::GameType.register do |game_type| 
      game_type.name = "TreasureIsland" 
      game_type.version = "0.1" 
      game_type.thumbnail = "teasure_island.jpg" 
     end 
     end 
    end 
    end 
end 

Öneriler aşağıdaki kodu vardır?

+0

Neden tam olarak satıcı/eklentileri motoru sokmaya çalışıyor? Bir mücevher olarak geliştirmemenin nedeni nedir? Neden sadece bir mücevher olarak gelişmiyor? – johnmcaliley

+0

Bunu böyle yapabilirim. Bunu yapmamın belli bir nedeni yok, ama sadece iki şekilde çalışması gerektiğini düşündüm? –

cevap

2

Railties'in eklenti dizininde çalışmayacağını okudum, çünkü uygulamanın önyükleme işleminde farklı bir noktaya yüklenmesi amaçlanıyor. Kuyumcu gibi işe yarayan bir şey kullanarak bir mücevher oluşturmanızı tavsiye ederim. Railtie/Engine'in amacı birden fazla ray uygulamasına dahil edilebilecek yeniden kullanılabilir bir bileşene sahip olmaktır. Bir mücevher oluşturduğunuzda, Gemfile'ınızdaki yerel mücevher yolunu gösterebilirsiniz. Bu, motor kodunuzdaki değişiklikleri motor kodunda her değişiklik yaptığınızda inşa etmenize ve yeniden yüklemenize gerek kalmadan ray uygulamanız içinde görmenizi sağlar. Tabii ki, paketleyiciyi, üretimde kurulu gemiye işaret etmek istersiniz. Github'a koymanızı ve Gemfile ürününüzde bu URL'yi kullanmanızı tavsiye ederim.

Bundler yerel taş örneği: Modern Rubyist sitesinde dışarı

#Gemfile 
gem "my_engine", :require => "my_engine", :path => "/my_engines/my_engine" 

kontrol edin. Railties ve Motorlar oluşturma konusunda iyi bir dizi var. Bu yazıldığından beri Rails'de bazı değişiklikler olmuş olabilir, ama bunun çoğunun hala geçerli olduğunu düşünüyorum. Ben Rails ile Motorları yazma öğreniyordu zaman iyi bir bit yardımcı beni 3.

http://www.themodestrubyist.com/2010/03/01/rails-3-plugins---part-1---the-big-picture/
http://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/
http://www.themodestrubyist.com/2010/03/16/rails-3-plugins---part-3---rake-tasks-generators-initializers-oh-my/
http://www.themodestrubyist.com/2010/03/22/rails-3-plugins---part-4---more-on-generators/

2

John, inan eklentileri vs motorlar (tipik taşlar olan) (satıcıda yaşayan) raylar başlatma işleminde farklı noktalara yüklenir. Motorlar aslında biraz daha fazla esnekliğe sahiptir, raylara daha derin kanca yapabilirler. Buna ek olarak, bir mücevher olarak ambalajlamanın birçok avantajı vardır: uygulamalar arasında paylaşma, ayrı bir kod repo'sunda bakımı daha kolay, daha kolay sürüm kontrolü.

Şu anda benim ilk raylar motorunu oluşturma ve oluşturulan yararlı bir başlangıç ​​noktası ve gömme yoluyla, başlangıç ​​aşamasında ediyorum:

http://keithschacht.com/creating-a-rails-3-engine-plugin-gem/