質問

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で記載)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top