Wyłącz ActiveRecord dla Rails 4

Chcę wyłączyć ActiveRecord w Rails 4. Wykonałem następujące czynności w 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

By I have an error of

/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)
Author: Deepak Mahakale, 2013-09-29

8 answers

Jeśli tworzysz nową aplikację, możesz użyć -O, aby pominąć ActiveRecord:

rails new my_app -O

Dla istniejących aplikacji:

1. Usuń klejnoty adaptera bazy danych z pliku Gemfile (mysql2, sqlite3, itp.)

2. Zmień swoje config/application.rb

Usuń linię require 'rails/all i wymagaj frameworków, których chcesz użyć, na przykład:

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

Usuń config.active_record.raise_in_transactional_callbacks = true z config/application.rb

3. Usuń swój plik config/database.yml, db/schema.rb i migracje (jeśli any)

4. Usuń migrację sprawdź w test/test_helper.rb

5. Usuń dowolną konfigurację ActiveRecord z plików config/environments (to jest przyczyną twojego błędu)

To wszystko, co musisz zrobić dla pustej aplikacji Rails. Jeśli napotkasz problemy spowodowane przez istniejący kod, stack trace powinien dać ci wystarczające informacje na temat tego, co musisz zmienić. Możesz na przykład mieć konfigurację ActiveRecord w swoich inicjalizatorach.

 248
Author: mechanicalfish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-07 16:49:28

Hi oto co daje domyślne rails new 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"

Wewnątrz Twojej config / aplikacji.rb

Dodatkowo, występuje bez bazy danych.YML I NO db/migrate/* i schemat.rb

 13
Author: jasmo2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-13 05:27:29

Ponieważ jest to wciąż pierwszy hit podczas wyszukiwania Google dla wyłączenia active record dla Rails 5, dodam to tutaj:

Dla Szyn 5

Wykonaj wszystkie kroki w odpowiedzi @mechanicalfish, ale także usuń linię

Rails.application.config.active_record.belongs_to_required_by_default = true

Od

config/initializers/new_framework_defaults.rb
 6
Author: mmeyers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 11:12:04

Dla osób używających gem rails-api może wystąpić podobny błąd podczas używania znacznika --skip-active-record podczas wykonywania rails-api new my_api. Aktualną poprawką (do czasu wydania nowej poprawionej wersji gem) jest edycja gem rails-api, aby mieć ten commit . Użyj bundle open i zastąp Stary Gemfile Nowym poprawionym. Powtórz i wszystko będzie gotowe.

 5
Author: Alex Moore-Niemi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-29 15:20:43

Aby wyłączyć ActiveRecord w Rails 4.2 możesz utworzyć config/initializers / middleware.rb

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

Zobacz terminal grabie middleware

 4
Author: Vinicius Luiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 14:02:41

Dla Rails 5:

Jeśli generujesz nową aplikację

Użyj opcji --skip-active-record do wygenerowania aplikacji bez bazy danych:

rails new myApp --skip-active-record

Zwróć uwagę na dodatkowy myślnik ' - ' w przeciwieństwie do poprzednich wersji Rails.

 4
Author: Crimbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-24 23:44:16

Dla Ruby On Rails w wersji 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"
 0
Author: Kamil Załęski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-21 21:53:09

Dla wtyczek Rails (lub gemów) z spec/dummy app

Kiedy Twoja aplikacja rails mieszka w spec/dummy i uruchamiasz serwer z katalogu głównego wtyczki. Możesz nadal uzyskać następujący błąd:

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

Aby tego uniknąć, Usuń require rails/all wewnątrz pliku bin/rails i wymagaj frameworków, których chcesz użyć, na przykład:

# 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"
 0
Author: rya brody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 09:58:10