Rails 3のActiverCordを削除します
-
19-09-2019 - |
質問
Rails 3ベータ版が発売されたので、Rails 3ベータ版で作業を開始したばかりのアプリの書き換えを見てみると、それを感じて少しスタートすることができました。このアプリは、すべてのモデルにMongodbとMongomapperを使用するため、ActivereCordを必要としません。前のバージョンでは、次の方法でActiverCordを降ろしています。
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を降ろすのかについてはここには手がかりがありません。私がこれを行う必要がある理由は、私が望まないものをロードすることはばかげているだけでなく、コントローラー用のジェネレーターを実行しようとしてもDB接続を作成できないことについて不平を言っているからです。これは、私が拭いたからです database.yml
使用するためにMongodbの接続の詳細に置き換えました この要点 MongoDB接続の詳細にdatabase.ymlを使用するため。とにかくコントローラーを生成するためだけに、DB接続をまったく開始できる必要がある理由がわかりません。
これを行う正しいRails 3つの方法を知っている人はいますか?
解決
ソースを読んでこれを行っているので、実際に機能したかどうかを教えてください。 :)
rails
アプリケーションテンプレートを生成するコマンドにオプションがあります -O
, 、ActivereCordをスキップするように指示します。
あなたが再実行のように感じないなら rails
, 、既存のアプリで以下を確認する必要があります。
あなたをチェックしてください
config/application.rb
そうではありません 持ってるrequire 'rails/all'
またrequire "active_record/railtie"
. 。代わりに、ActiverCordのない標準レールのセットアップの場合、それは持っている必要があります それだけ 以下には次のことが必要です。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"
例えば。
他のヒント
レール4
Rails 4で無効にする方法を探していましたが、Rails 4で機能しなくなったこの答えのみを見つけました。これは、Rails 4(RC1でテストされた)でそれを行う方法です。
新しいプロジェクトで
rails new YourProject --skip-active-record
既存のプロジェクトで
- Gemfileで、データベースドライバーの宝石を削除します。
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 Middlewareを削除する必要があります(Unicornの場合のようです):
config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement"
(経由 https://stackoverflow.com/a/18087332/764342)
これが他の人が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で私がしなければならなかったもう1つのことはコメントすることです
config.active_record.identity_map = true
の config/application.rb
.
RSPECを実行している場合は、(spec_helperで)削除する必要があります。
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"
削除します
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = true
また コメント アウト
# config/application.rb
config.active_record.whitelist_attributes = true
(Rails 3.2.13で記載)