Chcę wyłączyć ActiveRecord w Railsach 4. Wykonałem następujące czynności 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
Przez mam błąd
/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)
ruby-on-rails
ruby
ruby-on-rails-4
ア レ ッ ク ス
źródło
źródło
rails new ... -O
aby wyłączyć activerecord?Odpowiedzi:
Jeśli tworzysz nową aplikację, możesz użyć
-O
do pominięcia ActiveRecord:W przypadku istniejących aplikacji:
1. Usuń klejnoty adapterów bazy danych z pliku Gemfile (mysql2, sqlite3 itp.)
2. Zmień swoje
config/application.rb
Usuń
require 'rails/all
linię i wymagaj frameworków (spośród tych dostępnych w twojejrails
wersji lista jest różna, nie tylko kopiuj), których chcesz użyć, na przykład:Usuń
config.active_record.raise_in_transactional_callbacks = true
zconfig/application.rb
3. Usuń
config/database.yml
plikdb/schema.rb
i migracje (jeśli istnieją)4. Usuń rejestrację migracji
test/test_helper.rb
5. Usuń konfigurację ActiveRecord z
config/environments
plików (to jest przyczyną błędu)To wszystko, co musisz zrobić dla pustej aplikacji Rails. Jeśli napotkasz problemy spowodowane przez istniejący kod, śledzenie stosu powinno dostarczyć wystarczających informacji o tym, co należy zmienić. Możesz na przykład mieć konfigurację ActiveRecord w swoich inicjatorach.
źródło
require 'rails/all'
zawiera, można znaleźć tutaj .rails new my_app -O
miesiąc temu. Teraz chcę odzyskać aktywny rekord. Jakie pliki / klejnoty / konfiguracje muszę teraz dodać?config.active_record.raise_in_transactional_callbacks = true
zconfig/application.rb
.Cześć, to właśnie daje domyślne railsy new_app -O
wewnątrz pliku config / application.rb
Dodatkowo jest dostarczany bez database.yml i NO db / migrate / * i schema.rb
źródło
require "action_cable/engine"
Ponieważ jest to wciąż pierwszy hit podczas wyszukiwania Google w celu wyłączenia aktywnego rekordu dla Rails 5, dodam to tutaj:
Do szyn 5
Wykonaj wszystkie kroki w odpowiedzi @mechanicalfish, ale także usuń linię
z
źródło
Dla tych, którzy używają rails-api gem , możesz napotkać podobny błąd podczas używania
--skip-active-record
flagirails-api new my_api
. Bieżąca poprawka (do czasu wydania nowej poprawionej wersji klejnotu) polega na edycji gemu rails-api tak, aby miał to zatwierdzenie . Użyjbundle open
i wymień staryGemfile
na nowy, poprawiony. Uruchom ponownie i wszystko powinno być gotowe.źródło
Aby wyłączyć ActiveRecord w Railsach 4.2, możesz utworzyć config / initializers / middleware.rb
Zobacz oprogramowanie pośredniczące do rake terminali
źródło
Dla szyn 5:
Jeśli generujesz nową aplikację
Skorzystaj z
--skip-active-record
opcji generowania aplikacji bez bazy danych:rails new myApp --skip-active-record
źródło
Dla wtyczek Rails (lub klejnotów) z
spec/dummy
aplikacjąKiedy twoja aplikacja rails żyje
spec/dummy
i uruchamiasz serwer z katalogu głównego wtyczki. Nadal możesz otrzymywać następujący błąd:Aby tego uniknąć, usuń
require rails/all
zawartość plikubin/rails
i wymagaj frameworków, których chcesz użyć, na przykład:źródło
Dla Ruby On Rails w wersji 5.1.x
źródło