4 के लिए ActiveRecord अक्षम करें


113

मैं 4 में ActiveRecord को निष्क्रिय करना चाहता हूं। मैंने निम्नलिखित कार्य किया config/application.rb

require File.expand_path('../boot', __FILE__)

# require 'rails/all'  -- commented

require "action_controller/railtie"
require "action_mailer/railtie"
#require "active_resource/railtie" no need
#require "rails/test_unit/railtie" no need
#require "sprockets/railtie" no need

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env)

module MyApp
  class Application < Rails::Application
     config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement"
  end
end

द्वारा मैं एक त्रुटि है

/home/alex/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/railtie/configuration.rb:95:in 
  method_missing: undefined method active_record for #<Rails::Application::Configuration:0x00000002005c38> (NoMethodError)

4
सिर्फ rails new ... -Oएक्टिवरकॉर्ड को निष्क्रिय करने के लिए उपयोग क्यों नहीं किया जाता है ?
येवगेनी एनफिलोयेव

क्या app_middleware.delete जरूरत है, यहां तक ​​कि इस मुद्दे का कारण हो सकता है?
house9

मौजूदा रेल 4/5/6 ऐप्स के लिए, आप इस उत्तर के बाद सक्रिय रिकॉर्ड को अक्षम कर सकते हैं ।
ऑल्टर लागोस

जवाबों:


261

यदि आप एक नया एप्लिकेशन बना रहे हैं, तो आप -OActiveRecord को छोड़ने के लिए उपयोग कर सकते हैं :

rails new my_app -O

मौजूदा अनुप्रयोगों के लिए:

1. अपने जेमफाइल (mysql2, sqlite3, आदि) से डेटाबेस एडॉप्टर रत्नों को निकालें।

2. अपना बदलें config/application.rb

require 'rails/allलाइन निकालें और फ्रेमवर्क की आवश्यकता होती है ( आपके संस्करण में उपलब्ध लोगों के बीच rails, सूची बदलती है, बस कॉपी न करें) जिसका आप उपयोग करना चाहते हैं, उदाहरण के लिए:

require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"

निकालें config.active_record.raise_in_transactional_callbacks = trueसेconfig/application.rb

3. अपनी config/database.ymlफ़ाइल db/schema.rbऔर माइग्रेशन हटाएं (यदि कोई हो)

4. माइग्रेशन चेक इन डिलीट करें test/test_helper.rb

5. अपनी config/environmentsफ़ाइलों से किसी भी ActiveRecord कॉन्फ़िगरेशन को हटाएं (यह वही है जो आपकी त्रुटि पैदा कर रहा है)

यह सब आपको एक खाली रेल एप के लिए करना है। यदि आप अपने मौजूदा कोड के कारण होने वाली समस्याओं में भाग लेते हैं, तो स्टैक ट्रेस आपको पर्याप्त जानकारी देनी चाहिए जो आपको बदलने की आवश्यकता है। आप उदाहरण के लिए अपने initializers में कुछ ActiveRecord कॉन्फ़िगरेशन हो सकता है।


2
इन परिवर्तनों के अलावा, मुझे भी कुछ लाइनों को spec_helpers.rb (RSpec का उपयोग करके) को हटाना पड़ा: जुड़नार और लेनदेन के बारे में। मैं सक्रिय_मॉडल का भी उपयोग कर रहा था, इसलिए मैंने यहाँ से आवश्यकता सूची में सक्रिय_मॉडल के साथ active_record को बदल दिया: stackoverflow.com/questions/19078044/…
arnab

3
मैं 'रेल / सभी' के बदले में उपलब्ध रेल ढांचे की सूची कहां देख सकता हूं?
इमिलेसिल्विस

18
हर चीज की सूची यहांrequire 'rails/all' मिल सकती है
दिनांक

3
मैंने rails new my_app -Oएक महीने पहले एक एप्लिकेशन बनाया था। अब मैं सक्रिय रिकॉर्ड वापस चाहता हूं। मुझे अब जो फाइलें / रत्नों / विन्यास की आवश्यकता है, वे क्या हैं?
जक

1
मैं भी दूर करने के लिए किया था config.active_record.raise_in_transactional_callbacks = trueसे config/application.rb
बी सेवन

15

नमस्ते, यह वही है जो डिफ़ॉल्ट नया new_app -O देता है

require "rails"
# Pick the frameworks you want: 
require "active_model/railtie" 
require "active_job/railtie"
# require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "action_view/railtie" 
require "sprockets/railtie" 
require "rails/test_unit/railtie"

अपने config / application.rb के अंदर

इसके अतिरिक्त, यह database.yml और NO db / migrate / * और schema.rb के बिना आता है


4
और रेल के लिए 5 <= addrequire "action_cable/engine"
rails_id

7

चूँकि यह अब भी पहली हिट है, जब Google ने रेल्स 5 के लिए सक्रिय रिकॉर्ड को निष्क्रिय करने के लिए खोजा, तो मैं इसे यहाँ जोड़ूंगा:

रेल के लिए ५

@ मेकेनिकलफिश के उत्तर में सभी चरण करें, लेकिन लाइन को भी हटा दें

Rails.application.config.active_record.belongs_to_required_by_default = true

से

config/initializers/new_framework_defaults.rb

5

रेल-आपी मणि का उपयोग करने वालों के लिए आपको --skip-active-recordध्वज का उपयोग करते समय एक समान त्रुटि का सामना करना पड़ सकता है rails-api new my_api। वर्तमान फिक्स (जब तक मणि की एक नई सही संस्करण जारी किया गया है) करने के लिए अपने पटरियों-api मणि संपादित करने के लिए है इस लिए प्रतिबद्ध । नए सही किए गए के साथ bundle openपुराने का उपयोग करें और बदलें Gemfile। रेरन और आप सभी सेट होना चाहिए।


4

ActiveRecord को Rails 4.2 में अक्षम करने के लिए आप config / initializers / midware.rb बना सकते हैं

Rails.application.middleware.tap do |middleware|
  middleware.delete ActiveRecord::Migration::CheckPending
  middleware.delete ActiveRecord::ConnectionAdapters::ConnectionManagement
  middleware.delete ActiveRecord::QueryCache
end

टर्मिनल रेक मिडलवेयर देखें


4

रेल के लिए 5:

यदि आप एक नया ऐप बना रहे हैं

--skip-active-recordडेटाबेस के बिना एप्लिकेशन बनाने के लिए विकल्प का उपयोग करें :

rails new myApp --skip-active-record

अतिरिक्त हाइफ़न पर ध्यान दें - 'रेल के पिछले संस्करणों के विपरीत।


1
यदि आपने पहले से ही सक्रिय रिकॉर्ड को छोड़ दिए बिना अपनी परियोजना बनाई है, तो बस कॉन्फ़िगर / वातावरण / # config.active_record.verbose_query_logs = true # config.active_record_igration_error =: page_load और अपने डेटाबेस का नाम बदलकर कुछ और करने के लिए सभी सक्रिय_कार्ड संदर्भों पर टिप्पणी करें। । वो मेरे लिए किया गया।
जुआन रिकार्डो

1
इस लाइन को बिन / सेटअप => # सिस्टम में भी टिप्पणी करें! 'बिन / रेल्स डीबी: सेटअप'
जुआन रिकार्डो

1

एक spec/dummyएप्लिकेशन के साथ रेल प्लगइन्स (या रत्न) के लिए

जब आपकी रेल एप रहती है spec/dummyऔर आप अपने सर्वर को प्लगइन-रूट डायरेक्टरी से शुरू करते हैं। आपको अभी भी निम्नलिखित त्रुटि मिल रही है:

Cannot load `Rails.application.database_configuration`: Could not load database configuration. No such file - ["config/database.yml"] 

इससे बचने के लिए, require rails/allफ़ाइल के अंदर निकालें bin/railsऔर उन रूपरेखाओं की आवश्यकता है, जिनका आप उपयोग करना चाहते हैं, उदाहरण के लिए:

# Pick the frameworks you want: 
require "active_model/railtie" 
require "active_job/railtie"
# require "active_record/railtie" 
require "action_cable/engine"
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "action_view/railtie" 
require "sprockets/railtie" 
require "rails/test_unit/railtie"

-1

रूबी ऑन रेल्स संस्करण 5.1.x के लिए

require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
require "rails/test_unit/railtie"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.