アレッ*_*ックス 110 ruby ruby-on-rails ruby-on-rails-4
我想在Rails 4中禁用ActiveRecord.我做了以下内容 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
Run Code Online (Sandbox Code Playgroud)
我有一个错误
/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)
Run Code Online (Sandbox Code Playgroud)
mec*_*ish 254
如果要创建新应用程序,可以使用-O跳过ActiveRecord:
rails new my_app -O
Run Code Online (Sandbox Code Playgroud)
对于现有应用:
1.从Gemfile中删除数据库适配器gem(mysql2,sqlite3等)
2.改变你的 config/application.rb
删除require 'rails/all行并要求使用您需要的框架,例如:
require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
Run Code Online (Sandbox Code Playgroud)
config.active_record.raise_in_transactional_callbacks = true从中移除config/application.rb
3.删除config/database.yml文件db/schema.rb和迁移(如果有)
4.删除迁移签入 test/test_helper.rb
5.从config/environments文件中删除任何ActiveRecord配置(这是导致错误的原因)
这就是您需要为空Rails应用程序所做的一切.如果遇到现有代码导致的问题,堆栈跟踪应该为您提供有关需要更改的内容的充分信息.例如,您可以在初始化程序中使用一些ActiveRecord配置.
小智 14
嗨,这是新的new_app -O默认的rails
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"
Run Code Online (Sandbox Code Playgroud)
在你的config/application.rb里面
此外,它没有database.yml和NO db/migrate/*和schema.rb
小智 6
由于这仍然是搜索Google禁用Rails 5的活动记录时的第一个命中,我将在此处添加:
对于Rails 5
执行@mechanicalfish中的所有步骤,但也删除该行
Rails.application.config.active_record.belongs_to_required_by_default = true
Run Code Online (Sandbox Code Playgroud)
从
config/initializers/new_framework_defaults.rb
Run Code Online (Sandbox Code Playgroud)
对于那些使用rails-api gem的人来说,--skip-active-record在执行时使用标志时可能会遇到类似的错误rails-api new my_api.当前修复(直到发布新的更正版本的gem)是编辑您的rails-api gem以进行此提交.使用bundle open旧Gemfile的更正旧设备并将其替换.重新运行,你应该全力以赴.