现在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方式吗?
我正在阅读这篇文章,所以请告诉我它是否真的有效.:)
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 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.
对于新的rails应用程序,您可以通过指定--skip-active-record参数使其排除活动记录.例如:
rails new appname --skip-active-record
如果您使用Rails 3.2生成了一个新项目,则还需要注释掉:
config.active_record.mass_assignment_sanitizer = :strict
和
config.active_record.auto_explain_threshold_in_seconds = 0.5
在您的development.rb文件中.
所有这些都是真的.我在rails 3.1中要做的另一件事就是注释掉
config.active_record.identity_map = true
在config/application.rb
.