Disable ActiveRecord for Rails 4

I want to disable ActiveRecord in Rails 4. I did the following in 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)
52725 次浏览

如果您正在创建一个新的应用程序,您可以使用 -O跳过 ActiveRecord:

rails new my_app -O

现有申请:

从 Gemfile 中删除数据库适配器 gem (mysql2、 sqlite3等)

2. 改变你的 config/application.rb

Remove require 'rails/all line and require frameworks (among those 有空 in your rails version, the list varies, do not just copy) you want to use, for example:

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

Remove config.active_record.raise_in_transactional_callbacks = true from config/application.rb

3. Delete your config/database.yml file, db/schema.rb and migrations (if any)

4. 在 test/test_helper.rb中删除迁移检查

5. Delete any ActiveRecord configuration from your config/environments files (this is what is causing your error)

这就是一个空的 Rails 应用程序所需要做的全部工作。如果遇到由现有代码引起的问题,堆栈跟踪应该提供关于需要更改内容的充分信息。例如,在初始化器中可能有一些 ActiveRecord 配置。

对于那些使用 Rails-api gem的用户,在执行 rails-api new my_api时使用 --skip-active-record标志时可能会遇到类似的错误。当前的修复(直到发布新的更正版本的 gem)是编辑您的 ails-api gem,使其具有 这个承诺。使用 bundle open并将旧的 Gemfile替换为新的更正的 Gemfile。重新运行,你应该都准备好了。

为了在 Rails 4.2中禁用 ActiveRecord,您可以创建 Config/initializer/dleware.rb

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

查看终端 耙式中间件耙式中间件

您好,这是默认 Rails 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里面

此外,它没有 Yml和没有 数据库/迁移/* Schema rb

由于这仍然是在谷歌搜索禁用 Rails 5活动记录时的第一次搜索结果,我将在这里添加以下内容:

为了 Rails 5

执行@machicalfish 回答中的所有步骤,还要删除该行

Rails.application.config.active_record.belongs_to_required_by_default = true

来自

config/initializers/new_framework_defaults.rb

铁路5:

如果你正在生成一个新的应用程序

使用 --skip-active-record选项生成没有数据库的应用程序:

rails new myApp --skip-active-record

注意,与以前的 Rails 版本相比,多出了一个连字符“-”。

对于 Ruby On Rails 版本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"

For Rails Plugins (or gems) with a spec/dummy app

当您的 Rails 应用程序位于 spec/dummy并且您从 plugin-root 目录启动服务器时。你可能仍然会得到以下错误:

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

为了避免这种情况,删除文件 bin/rails中的 require rails/all并要求使用想要使用的框架,例如:

# 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"