Ubuntu 11.04のRails 3.0.10/MRIアプリケーションをUbuntu 11.04のJRuby 1.6.4に移植しました。私の目標は、JRubyの下でアプリケーションを実行するために次のことをしなければならない場所に移動することです。Ruby:Rails:MRIとJRuby
railsapp1> rbenv local jruby-1.6.4
railsapp1> rails server
そしてMRIの下で働いてアプリを取得するには、この問題の
railsapp1> rbenv local 1.9.2-p290
railsapp1> rails server
最初の部分は、宝石を解決することでした。コードの変更なしで、このプロセスの作品を作るために、私は/ MySQLのMRI/JRubyとSQLiteのの異なる組み合わせを持つダミーレールのアプリを作成することにより、ブルートフォース法を使用して得たRailsのGemfile
platforms :mri do
gem 'mysql2', '~>0.2.11'
end
platforms :jruby do
gem 'jruby-openssl'
gem 'activerecord-jdbcmysql-adapter'
end
これらの宝石の文に次のように行きました生成されたGemファイルから各組み合わせのgemステートメントを取得します。
これはあまり効果がありません。
development:
adapter: mysql2
database: doodad
username: doodad
password: doodad
host: localhost
これのconfig/database.ymlをファイルにのみMRIバージョンのために働く:/ database.ymlをファイルに私の設定は次のようになります。 JRubyのバージョンについては、configが/ database.ymlをファイルには、次のようになります。
development:
adapter: mysql
database: doodad
username: doodad
password: doodad
host: localhost
すなわちファイル間の唯一の違いは、データベースアダプタ(mysql2対mysqlの)の名前です。 Ruby環境がMRIかJRubyかに基づいてadapter.ymlファイルまたはシステム初期化子にアダプタを選択するよう指示する方法はありますか?
ありがとう!私は最終的にアダプターに行った:<%= RUBY_ENGINE == "jruby"? "mysql": "mysql2"%> –