Ruby 1.8x と Rails 2.x で正常に動作していた小さな Rails アプリがあります。残念ながら、Ruby 1.9.x と Rails 3 に移行することにしました。
私の Ruby アプリは MySQL を使用しており、そのために Active Record を使用しています。ただし、Rails (2.x) を作成する前にデータベースを埋めるために作成した以前の pgm があり、これは現在完全なアプリケーションの一部です。(Rails の外部でスタンドアロンの pgm をテスト/実行できますが、問題はありません。)
このスタンドアロン プログラムは、MySQL と dbi gems を使用しています。このプログラムをモデルからそのまま呼び出します。
system("ruby standalonepgm.rb -args ")
Rails 2.0 では、これは問題なく動作します。3.0 では、プログラムはエラーをキャプチャする方法なしで終了します。
コンソールで実行すると、dbi gem が見つからないため、プログラムが停止することがわかります。
dbi の gem を Gemfile に入れ、日付をバンドルすると、本当に問題が発生します。Rails が起動を拒否します - Rails サーバーはあらゆる種類の問題で停止します。スクリーンダンプを入れることはできますが、それは重要ではないと思います。
2つの問題があるようです:
- DBIは確かにRailsの神と互換性がありません
- Rails はサンドボックスを作成し、呼び出されるすべてのプログラムはそのサンドボックスに存在する必要があります (そのため、require ステートメントだけでは十分ではなく、Gemfile に存在する必要があります)。
それは修正可能ですか、それとも私はレールの隠された黒魔術に噛まれた人の 1 人で、過去 8 週間以上の努力が無駄になっていますか?