1. ホーム
  2. ruby-on-rails

[解決済み] Rails 3でActiveRecordを削除する

2022-12-04 06:29:32

質問

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 をアンロードする方法についての手がかりはここにはありません。なぜこれをする必要があるかというと、不要なものをロードするのが馬鹿馬鹿しいだけでなく、コントローラ用のジェネレータを実行しようとしても、DB 接続ができないと文句を言われるからです。これは、私が database.yml を消して、MongoDBの接続詳細に置き換えたからです。 この gist を使うために、MongoDBの接続の詳細であるdatabase.ymlを使うようにしました。コントローラを生成するためだけに、なぜ DB 接続を開始する必要があるのかはよく分かりませんが......。

これを行うための正しい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" のようなものです。