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)
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.
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
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
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.
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
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.
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"
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"
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