2010-09-17 11 views
5

मैं अपनी पहली रेल 3 इंजन बनाने पर काम कर रहा हूँ और मैं वर्तमान में निम्न त्रुटि संदेश प्राप्त हो रहासमस्या पैदा कर रेल 3 इंजन

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

आप थोड़ा और अधिक पृष्ठभूमि मैं इंजन नहीं कर रहा हूँ देने के लिए एक मणि के रूप में, लेकिन मैंने इंजन फ़ाइलों को विक्रेता/प्लगइन्स फ़ोल्डर में रखा है। मुझे पता है कि प्लगइन्स फ़ोल्डर में लोड होने के साथ कोई समस्या है, लेकिन मैं समस्या को हल करने के तरीके पर स्पष्ट नहीं हूं। इंजन में

मेरे रेल/init.rb फ़ाइल

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 

सुझाव निम्नलिखित कोड है?

+0

क्यों वास्तव में आप विक्रेता/plugins में इंजन को रखने की कोशिश कर रहे हैं? इसे मणि के रूप में विकसित न करने का क्या कारण है? क्यों न सिर्फ मणि के रूप में विकसित? – johnmcaliley

+0

मैं इसे इस तरह से कर सकता था। कोई विशेष कारण नहीं था कि मैं इसे इस तरह से नहीं कर रहा था, लेकिन सिर्फ सोचा कि यह किसी भी तरह से काम करने के लिए था? –

उत्तर

2

मुझे लगता है कि मुझे याद है कि रेलटी प्लगइन्स निर्देशिका में काम नहीं करेगा, क्योंकि वे एप्लिकेशन बूट प्रक्रिया में एक अलग बिंदु पर लोड होने का इरादा रखते हैं। मैं ज्वेलर जैसे कुछ का उपयोग करके एक मणि बनाने की सिफारिश करता हूं, जो आपके लिए बहुत काम करता है। रेलटी/इंजन का उद्देश्य एक पुन: प्रयोज्य घटक होना है जिसे एकाधिक रेल ऐप्स में शामिल किया जा सकता है। एक बार आपके पास एक मणि बनाया गया है, तो आप अपने Gemfile के भीतर स्थानीय मणि पथ को इंगित कर सकते हैं। जब भी आप इंजन कोड में बदलाव करते हैं, तो यह आपको अपने रेल ऐप के अंदर अपने इंजन कोड में बदलावों को देखने और रीम इंस्टॉल करने की अनुमति देता है। बेशक आप उत्पादन में स्थापित मणि को बंडलर इंगित करना चाहते हैं। मैं इसे गिटब पर डालने और उत्पादन में अपने जेमफाइल में उस यूआरएल का उपयोग करने की सलाह दूंगा।

Bundler स्थानीय मणि उदाहरण:

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

आधुनिक Rubyist की वेबसाइट की जाँच करें। रेलटी और इंजन बनाने पर उनकी अच्छी श्रृंखला है। लिखे जाने के बाद से रेल में कुछ बदलाव हो सकते हैं, लेकिन मुझे लगता है कि इसमें से अधिकांश अभी भी प्रासंगिक है। यह मुझे बाहर एक अच्छा सा जब मैं कैसे रेल के साथ इंजन लिखने के लिए तैयार कर रही थी मदद की 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

जॉन, मेरा मानना ​​है कि इंजन (जो आमतौर पर जवाहरात कर रहे हैं) प्लगइन्स बनाम (जो विक्रेता में रहते हैं) रेल प्रारंभिक प्रक्रिया में विभिन्न बिंदुओं पर लोड होते हैं।

इंजनों में वास्तव में थोड़ा अधिक लचीलापन होता है, वे रेलों में गहरी हुक कर सकते हैं। इसके अलावा, एक मणि के रूप में पैकेजिंग में बहुत सारे फायदे हैं: ऐप्स में साझा करना आसान है, एक अलग कोड रेपो, आसान संस्करण नियंत्रण में बनाए रखना आसान है।

मैं अभी मेरा पहला रेल इंजन बनाने रहा हूँ और बनाया एक उपयोगी प्रारंभिक बिंदु और वाक-के माध्यम से शुरू हो रही है के लिए:

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

संबंधित मुद्दे