当前位置:  开发笔记 > 编程语言 > 正文

在Rails 3中删除ActiveRecord

如何解决《在Rails3中删除ActiveRecord》经验,为你挑选了5个好方法。

现在Rails 3测试版已经发布了,我想我会重新编写一个我刚刚开始在Rails 3测试版上工作的应用程序,这两个版本都是为了感受它并获得一些启动.该应用程序使用MongoDB和MongoMapper的所有模型,因此不需要ActiveRecord.在以前的版本中,我按以下方式卸载activerecord:

config.frameworks -= [ :active_record ]    # inside environment.rb

在最新版本中,这不起作用 - 它只是抛出一个错误:

/Library/Ruby/Gems/1.8/gems/railties-3.0.0.beta/lib/rails/configuration.rb:126:in
  `frameworks': config.frameworks in no longer supported. See the generated 
  config/boot.rb for steps on how to limit the frameworks that will be loaded 
  (RuntimeError)
 from *snip*

当然,我已经按照它的建议查看了boot.rb,但据我所知,这里没有任何关于如何卸载AR的线索.我需要这样做的原因是因为加载一些我不想要的东西不仅是愚蠢的,而且即使我试图为控制器运行一个生成器时它也无法建立数据库连接.这是因为我已经擦除database.yml并用MongoDB的连接细节替换它,以便使用这个要点将database.yml用于MongoDB连接细节.不知道为什么它需要能够启动数据库连接才能生成控制器....

有人知道正确的Rails 3方式吗?



1> Stéphan Koch..:

我正在阅读这篇文章,所以请告诉我它是否真的有效.:)

rails生成应用程序模板的命令现在有一个选项-O,告诉它跳过ActiveRecord.

如果您不想重新运行rails,请在现有应用中查看以下内容:

检查您config/application.rb 具有require 'rails/all'require "active_record/railtie".相反,对于没有ActiveRecord的标准Rails设置,它应该只有以下要求:

require File.expand_path('../boot', __FILE__)

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

# Auto-require default libraries and those for the current Rails environment. 
Bundler.require :default, Rails.env

如果,在config/application.rb,您正在使用该config.generators部分,请确保它没有该行g.orm :active_record.nil如果需要,可以明确地将其设置为,但这应该g.orm是完全省略时的默认值.

可选,但在您的Gemfile,删除gem加载数据库模块的行.gem "mysql"例如,这可能是一行.


在rails 3.1中,你还需要在`application.rb`文件中有`require'sprockets/railtie"`.
是的,似乎已经做到了.看来-O选项也可以作为'--skip-activerecord'调用.我使用此选项为另一个(临时)应用程序运行rails命令,它生成了一个与上面所写内容完全匹配的新应用程序模板.所以我可以将这些更改复制并粘贴到我的实际应用中.谢谢 - 很好找:)

2> apeiros..:

Rails 4

我一直在寻找如何在rails 4中禁用它,并且只找到了这个不再适用于rails 4的答案.所以这就是你在rails 4中做到这一点的方法(在RC1中测试).

在一个新项目中

rails new YourProject --skip-active-record

在现有项目中

在Gemfile中,删除数据库驱动程序gem,例如gem 'sqlite3'gem 'pg'.

在config/application.rb中,替换require 'rails/all'

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

在config/environments/development.rb中,删除或注释掉 config.active_record.migration_error = :page_load

您可能必须从spec_helper中删除active_record助手(在评论中通过VenoM)

您可能必须删除ConnectionManagement中间件(似乎是独角兽的情况):( config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement"通过/sf/ask/17360801/)

我希望这有助于其他人寻找如何在Rails 4中禁用ActiveRecord.


谢谢!您还需要从spec_helper中删除active_record帮助程序(不是必需的,但如果您运行的是规范).请参阅Rimian的最新评论.

3> Jim Geurts..:

对于新的rails应用程序,您可以通过指定--skip-active-record参数使其排除活动记录.例如:

rails new appname --skip-active-record



4> 小智..:

如果您使用Rails 3.2生成了一个新项目,则还需要注释掉:

config.active_record.mass_assignment_sanitizer = :strict

config.active_record.auto_explain_threshold_in_seconds = 0.5

在您的development.rb文件中.



5> Michal Kukli..:

所有这些都是真的.我在rails 3.1中要做的另一件事就是注释掉

config.active_record.identity_map = true

config/application.rb.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有