2012-02-02 16 views
27

रेल को rails3.2.1 को अपग्रेड करने के बाद अपग्रेड करने के बाद यह चेतावनी होती है:कैसे विक्रेता से निपटने के लिए/plugins 3.2.1

आप विक्रेता/प्लगइन्स में रेल 2.3 शैली प्लग इन हो! इन प्लगइन के लिए समर्थन रेल 4.0 में हटा दिया जाएगा। उन्हें बाहर ले जाएं और उन्हें अपने जेमफाइल में बंडल करें, या उन्हें अपने ऐप में lib/myplugin/* और config/startizers/myplugin.rb के रूप में फोल्ड करें। इस बारे में अधिक के लिए रिलीज़ नोट्स देखें: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released

मैं विक्रेता/प्लगइन्स निर्देशिका में मेरी प्लगइन्स ले जाने, लेकिन मैं config/initializers/myplugin.rb फ़ाइल में लिखने के लिए कैसे पता नहीं है, और गूगल उत्तर नहीं मिलता है।

उत्तर

43

मैं सिर्फ इस पर एक ब्लॉग पोस्ट ने लिखा है: How to Convert Simple Rails 2.3 Style Plugins for Rails 3.2

+1

धन्यवाद आपके ब्लॉग पोस्ट के लिए बहुत कुछ! मैंने आपके उत्कृष्ट निर्देशों का उपयोग करके सफलतापूर्वक [gmail_smtp] (https://github.com/adamwiggins/gmail_smtp/) रूपांतरित कर दिया है। मामले में यह किसी को भी मदद करता है, मैं 'आवश्यकता से मूल' init.rb' में दो लाइनें बदल 'smtp_tls'' और 'की आवश्यकता होती है' के लिए actionmailer_gmail''' File.dirname की आवश्यकता होती है (__ FILE__) + '/../ ../lib/gmail_smtp/smtp_tls'' और 'File.dirname की आवश्यकता होती है (__ FILE__) + '/../../ lib/gmail_smtp/actionmailer_gmail'' क्रमशः। – user664833

+0

लिंक मर चुका है, क्या आप कृपया एक नया @ कॉनीबीयर पोस्ट कर सकते हैं। –

+0

लिंक :( –

8

मैं सिर्फ यह माध्यम से चला गया और पाया आप बस कुछ बातों की जांच करने के लिए प्रत्येक प्लगइन के माध्यम से जाना है कि:

  • यह एक मणि है rubygems पर? यदि हां, तो बस अपने Gemfile में यह छड़ी और से vendor/plugins
  • हटाते हैं कोई मणि उपलब्ध है, या मणि पुराना है, vendor/plugins में फ़ोल्डर लेने के लिए और करने के लिए lib/plugins

एक बात मैं भर में है भागा इसे स्थानांतरित कि आपको तब उन सभी प्लगइन्स को मैन्युअल रूप से आवश्यकता होगी।

Dir[Rails.root.join('lib', 'plugins', '*')].each do |plugin| 
    next if File.basename(plugin) == 'initializers' 

    lib = File.join(plugin, 'lib') 
    $LOAD_PATH.unshift lib 

    begin 
    require File.join(plugin, 'init.rb') 
    rescue LoadError 
    begin 
     require File.join(lib, File.basename(plugin) + '.rb') 
    rescue LoadError 
     require File.join(lib, File.basename(plugin).underscore + '.rb') 
    end 
    end 

    initializer = File.join(File.dirname(plugin), 'initializers', File.basename(plugin) + '.rb') 
    require initializer if File.exists?(initializer) 
end 

मैं भी था initializers मैं प्लग-इन में से कुछ के लिए आवश्यक की समस्या है, इसलिए मैं उन विशेष initializers lib/plugins/initializers फ़ोल्डर में चले गए: यहाँ प्रारंभकर्ता मैं बनाया है और config/initializers/plugins.rb में रखा है। आपको उन्हें प्लगइन का नाम नाम देना होगा, इसलिए my_plugin प्लगइन के लिए प्रारंभकर्ता को फ़ाइल lib/plugins/initializers/my_plugin.rb

उम्मीद है कि इससे मदद मिलती है!

+0

और क्या अगर एक व्यक्ति एक रत्न के एक नियंत्रक अधिरोहित है , इसे lib में कैसे स्थानांतरित करें? –

7

दोनों अन्य उत्तर अच्छे हैं और काम करने लगते हैं।

हालांकि अपने प्लगइन विक्रेता के तहत एक भी .rb फ़ाइल के होते हैं अगर/plugins /.../ lib और विक्रेता/plugins /.../ init.rb सिर्फ एक

require 'pluginname' 

तो है आप केवल एक फ़ाइल को अपनी lib निर्देशिका में कॉपी कर सकते हैं और कॉन्फ़िगर/प्रारंभकर्ताओं को एक फ़ाइल जोड़ सकते हैं, जिसके लिए 'yourpluginname'

यहां एक ठोस उदाहरण है जो act_as_rated प्लगइन का उपयोग कर एक ठोस उदाहरण है जो अभी तक एक मणि नहीं है।

  1. प्रतिलिपि विक्रेता/plugins/acts_as_rated/lib/acts_as_rated.rb लिब के लिए/
  2. एक फ़ाइल config/initializers/साथ acts_as_rated.rb बनाने निम्नलिखित ...

    की आवश्यकता होती है 'acts_as_rated'

  3. हटाने विक्रेता/plugins/acts_as_rated

+0

मैंने विक्रेता से lib तक ssl_requirement प्राप्त करने के लिए इस टिप का उपयोग किया। धन्यवाद !!! – Nungster

0

कोई भी उल्लेख किया है एक Railt में कनवर्ट यानी रेल या इंजन :: इंजन।

बस [कम से कम घर्षण के लिए उसे बनाने के लिए उपयोग बंडल मणि] एक रत्न में अपने गहरे लाल रंग का फ़ाइलों के सभी चलते हैं।

फिर Railtie डॉक्स पर एक नजर है [और अपने लक्ष्य को खोजने रेल संस्करण]:

https://apidock.com/rails/v3.2.13/Rails/Railtie

यह सिर्फ एक railtie को init.rb एक पुराने प्लगइन कन्वर्ट करने के लिए इस तरह से काफी आसान है और यह आपको रेल 4+ के लिए मार्ग प्रदान करता है।

समझे विचार या नियंत्रक ?, तो एक रेल :: इंजन के बजाय का उपयोग करें। जबकि रत्नों में इंजन वर्कफ़्लो स्टैंडपॉइंट से जटिल हो सकते हैं, प्लगइन को एक में कनवर्ट करना बहुत छोटा है।

खुद पर एक एहसान करो और सही मणि में इमारत परीक्षण शुरू करते हैं, के बजाय रेल परियोजना में।

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