बिना डेटाबेस वाले रूबी को रेल पर कैसे कॉन्फ़िगर करें?


102

एक छोटे से वेबसाइट प्रोजेक्ट के लिए रूबी ऑन रेल्स का उपयोग करना सुविधाजनक होगा जिसे डेटाबेस की कोई मौजूदा आवश्यकता नहीं है। मुझे पता है कि मैं MySQL में एक खाली डेटाबेस बना सकता हूं और वहां से जा सकता हूं, लेकिन क्या किसी को डेटाबेस के बिना रेल चलाने का एक बेहतर तरीका पता है?

धन्यवाद

जवाबों:


55

environment.rbफ़ाइल में इस लाइन को रद्द करें :

config.frameworks -= [ :active_record, :active_resource, :action_mailer]

2
रेल में 3 बस Gemfile से mysql मणि को हटा दें
jspooner

31
आप रेल 4 में कैसे करेंगे?
डैनियल रिस्तिक

2
रेल के लिए सवाल 4 stackoverflow.com/questions/19078044/…
grumpasaurus

108

के लिए रेल 3 और रेल 4 :

का प्रयोग करें -O(कैपिटल 'O') या --skip-activerecordविकल्प के लिए एक डेटाबेस के बिना एक आवेदन उत्पन्न करने के लिए।

rails new myApp -O

या

rails new myApp --skip-activerecord

यह उत्तर यहाँ से पुनः साझा किया गया है


के लिए रेल 5 :

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

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

rails new myApp --skip-active-record


2
हां, यह रेल 4 के साथ काम करता है :) - बस मान्य है। यदि आप परीक्षण इकाई का उपयोग करना चाहते हैं: नए myApp-O --skip-bundle -T
Chris Hough

1
यह निश्चित रूप से जाने का सबसे आसान तरीका है यदि आप खरोंच से शुरू कर रहे हैं, हालांकि चेतावनी दी है कि (कम से कम रेल 4.0.1 में) उस कमांड में सक्रिय और रिकॉर्ड के बीच एक '-' है। तो इसे पढ़ना चाहिए: नए myApp --स्काइप-सक्रिय-रिकॉर्ड
निक

1
मैंने सिर्फ मुद्दों का सामना किया और ध्यान दिया। रेल के लिए 4.2.x केवल -Oकाम करता है। विकल्प --skip-activerecordकाम नहीं करता है।
नज़र हुसैन

यह रेल-एप में भी काम करता है: नए myApp -O रेल। धन्यवाद
हाबिल

2
यदि कोई व्यक्ति सोच रहा है, तो रेल 5 में यह --skip-active-record(सक्रिय नाद रिकॉर्ड के बीच पानी का छींटा नोट करें)। दूसरा तरीका मेरे लिए काम नहीं करता है।
ऑडीओडायड ऑक्ट

53

मौजूदा रेल 4/5/6 परियोजना के लिए, आपकी config/application.rbफ़ाइल में आपकी निम्न पंक्ति है:

require 'rails/all' # or `require "rails"' in newer versions

(संदर्भ के रूप में वह लाइन इस फ़ाइल को लोड कर रही है )
इसलिए सभी को लोड करने के बजाय, आपको प्रत्येक लाइब्रेरी को अलग से लोड करना होगा:

# active_record is what we're not going to use it, so comment it "just in case"
# require "active_record/railtie" 

# This is not loaded in rails/all but inside active_record so add it if
# you want your models work as expected
require "active_model/railtie" 
# And now the rest
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "active_job/railtie" # Only for Rails >= 4.2
require "action_cable/engine" # Only for Rails >= 5.0
require "sprockets/railtie"
require "rails/test_unit/railtie"

# All these depend on active_record, so they should be excluded also
# require "action_text/engine" # Only for Rails >= 6.0
# require "action_mailbox/engine" # Only for Rails >= 6.0
# require "active_storage/engine" # Only for Rails >= 5.2

अपने रेल संस्करण के बारे में क्या लोड करना है, यह जानने के लिए टिप्पणियों पर नज़र रखें।
निम्न फ़ाइलों की जाँच करें (यदि आपके पास है तो) और निम्नलिखित पंक्तियों पर टिप्पणी करें:

# package.json
"@rails/activestorage": "^6.0.0",

# app/javascript/packs/application.js
require("@rails/activestorage").start()

# bin/setup
system! 'bin/rails db:prepare'

# config/environments/development.rb
config.active_storage.service = :local # For Rails >= 5.2
config.active_record.migration_error = :page_load
config.active_record.verbose_query_logs = true

# config/environments/test.rb
config.active_storage.service = :test # For Rails >= 5.2

# config/environments/production.rb
config.active_storage.service = :local # For Rails >= 5.2
config.active_record.dump_schema_after_migration = false

# spec/rails_helper.rb
ActiveRecord::Migration.maintain_test_schema!

# test/test_helper.rb
fixtures :all # In case you're using fixtures

# Only for Rails >= 5.0
#config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = true

ActiveRecord::Baseअपनी मॉडल फ़ाइलों में से किसी भी संदर्भ को हटा दें (या यदि लागू हो तो फ़ाइलों को हटा दें)। उदाहरण के लिए, ऑटोजेनरेटेड app/models/application_record.rbफ़ाइल।


2
रेल 5 के लिए आपको आवश्यकता भी पड़ सकती है active_job/railtieऔरaction_cable/engine
इंगमारस केलारस

2
वहाँ एक डमी DB अनुकूलक का उपयोग करने के लिए नहीं है database.ymlतो यह सिर्फ DB की अनदेखी करेगा?
क्लो

फिर 5 सुराग रेल में नाकाम रहने की समस्या के लिए rake assets:precompileकी वजह से NoMethodError: undefined method active_record'`: /
FLP

3
@Chloe github.com/nulldb/nulldbactiverecord-nulldb-adapter से आप अस्थायी या कम आक्रामक परिवर्तन के लिए एडेप्टर को स्वैप कर सकते हैं।
यूनिक्समनकी

1
@ सीडीएमओ हे, ध्यान देने के लिए धन्यवाद। मैं यह पूरी तरह से रेल 6. नहीं सभी आप अपने जवाब में टिप्पणी के बारे में निश्चित साथ संगत बनाने के जवाब को नवीनीकृत किया है के रूप में मैं के साथ या बिना 2 रेल ऐप्स बनाने -Oऔर action_mailerसाथ संबंधित नहीं है config/detabase.yml, तो यह टिप्पणी करने के लिए कोई आवश्यकता नहीं है। टिप्पणी करने के बाद टिप्पणी करने के लिए कुछ अतिरिक्त लाइनें भी हैं active_storage
आल्टर लागोस

16

नई परियोजना शुरू करते समय रेल 4 में आप -O या --स्काइप-सक्रिय-रिकॉर्ड का उपयोग कर सकते हैं

rails new my_project -O
rails new my_project --skip-active-record

यदि आपने पहले ही एक परियोजना बना ली है तो आपको टिप्पणी करने की आवश्यकता होगी

 require "active_record/railtie"

config / application.rb और से

 config.active_record.migration_error = :page_load

विन्यास / वातावरण / विकास से


14

यदि आपको डेटाबेस की आवश्यकता नहीं है, तो संभवतः आपको बल्क रेल की आवश्यकता नहीं है। आप के साथ काम करने के लिए एक छोटे से अधिक अनुकूलन योग्य रूपरेखा चाहते हो सकता है।

सिनात्रा एक छोटा ढांचा है जो बुनियादी स्थैतिक पृष्ठों की सेवा के लिए बहुत अच्छा है।

लेकिन अगर आप यहां रेल का उपयोग करने पर जोर देते हैं, तो यह एक लेख है जो आपको यह दिखाएगा कि यह कैसे करना है


धन्यवाद - ये दोनों लिंक रेल्स रेसिपी बुक को संदर्भित करते हैं और डेटाबेस-कम रेल एप्लिकेशन के साथ परीक्षण कार्य करने के लिए चरण होते हैं। मैं आलसी हो रहा था और अन्य एप्स के लिए सर्वर पर पहले से ही रेल के बुनियादी ढांचे का लाभ उठाने की उम्मीद कर रहा था, लेकिन सिनाट्रा पेचीदा लग रहा है।
RobbieCanuck

1
मैं असहमत हूं। Active.com बिना किसी डेटाबेस के रेल पर बनाया गया है क्योंकि सभी डेटा एक एपीआई से आता है।
15

नोट: अंतिम वाक्य में दूसरा लिंक अब मौजूद नहीं है। मुझे एक 404 त्रुटि नहीं मिली।
पामेला कुक - लाइटबाय कॉर्प

0

समर्थन के लिए रेल 6 आरसी 1 और activerecord-nulldb-adapter मणि हमें एक बंदर पैचिंग की आवश्यकता है

में config / initializers / null_db_adapter_monkey_patches.rb

module ActiveRecord
  module ConnectionAdapters
    class NullDBAdapter < ActiveRecord::ConnectionAdapters::AbstractAdapter
      def new_table_definition(table_name = nil, is_temporary = nil)
        TableDefinition.new(table_name, is_temporary)
      end
    end
  end
end
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.