5

このトピックに関する以前のスレッドを読みましたが、そこで見つけた解決策では問題が解決されませんでした。データベースへのアクセスを行わない Rails 3.2.9 アプリケーションがあります。別のアプリケーションへの HTTP Rest プロトコルを使用して永続データにアクセスします。アプリは WEBrick を使用した「rails サーバー」のローカル テスト環境では正常に実行されますが、Nginx/Passenger では実行に失敗し、「*アプリケーションで例外 LoadError が発生しました (sqlite3 アダプターをインストールしてください:gem install activerecord-sqlite3-adapter(sqlite3 はバンドルの一部ではありません。Gemfile に追加してください。))"依存関係から ActiveRecord を削除する手順を試してみましたが、うまくいきませんでした. --skip-activerecord を使用して生成したところ、期待どおりに次のような application.rb が生成されました。

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

# Pick the frameworks you want:
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"

私のアプリケーションのどこにも、バンドラーによって作成された gemlock ファイル、コメント、および readme を除いて、activerecord または active_record への参照はありません。Bundler は ActiveRecord を依存関係として報告し、「bundle viz」は Rails 自体を ActiveRecord を必要とする gem として報告します。提案やアドバイスは大歓迎です。

エリックの質問に答えて、これが私のGemfileです

source 'https://rubygems.org'

gem 'rails', '3.2.9'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
4

1 に答える 1

2

あなたが発見したように、Rails 自体には、Gemspec の依存関係としてリストされている ActiveRecord があります。これまでにアーカイブしたセットアップは、Rails から ActiveRecord を削除する標準的な方法です。さらに進んで gem を削除したい場合は、ほとんどの場合、Rails gem を fork し、Gemspec の依存関係を削除する必要があります。

それほど単純かもしれませんが、ActiveRecord を結び付けるための追加のグルー コードが Rails にあることに気付くかもしれません。それも削除する必要があります。全体として、それだけの価値があるかどうか疑問に思っています。

ActiveRecord が必要ない場合は、既に効果的な読み込みを妨げています。一部のパーツはまだ読み込まれる可能性がありますが、ほとんどは読み込まれません。Rails のコア機能を削除するのに費やす時間に対してメモリ フットプリント/パフォーマンスが勝っていることを考えると、ニーズに合った間違ったフレームワークを検討していないのではないでしょうか?

非常に厳しい要件があり、Rails がまだ重すぎる場合は、代わりに Sinatra などを検討する必要があります。また、Rails を使い続けてカスタム Rack ミドルウェア スタックを作成し、コール スタックの必要な部分だけを保持することもできます。

ActiveRecord gem を削除する理由はそれ自体にないため、これが実行可能な解決策ではないにしても、より高い懸念を満たすためのいくつかの代替手段へのガイダンスを提供してくれることを願っています。

于 2013-01-09T09:37:46.900 に答える