質問

Rbenv、MRI Ruby(1.9.2-P290)、Rails 3.0.9、およびSQLite3を使用したRuby/Rails Devevelopment環境があります。 Jrubyに移植したいのですが、Railsアプリケーションのルートディレクトリで「Rbenv Local Jruby-1.6.4」と「Rails Server」を実行する以外に何もする必要がないようにしてください。 Jruby、および「Rbenv Local 1.9.2-P290」および「Rails Serer」を使用して、MRI Rubyで使用します。

SQLiteにアクセスするための宝石はRuby対Jrubyの場合は異なることを知っていますが、RubyがMRIのときにMRIに関連する宝石が拾われ、Jruby関連の宝石がピックアップされるように、Gemfileをどのように書きますか?ルビーはjrubyですか?

また、SQLiteの代わりにMySQLに移植する必要があります。 RubyとJrubyにはどの宝石を使用する必要がありますか?

記録には、Ubuntu 11.04、Ruby 1.9.2-P290、Jruby 1.6.4、およびRails 3.0.9または3.0.10を使用しています。

役に立ちましたか?

解決

昨年、大規模なRailsアプリケーションをJrubyに移植しましたが、それは驚くべき量の作業でした。確かに、その一部は、アプリがかなりひどく書かれていて、多くのレガシーコードを持っていることに関係していましたが、それでもされていました。あなたが疑問に思っている場合:私たちの問題のほとんどは私たちが使用した宝石から来ていましたが、それは時にはその時点でJrubyで適切に機能しなかったFFIに依存することがありました。私が少し後でしたルビニウスへの港は、はるかに痛みが少ないように見えましたが、MRIにとどまることを支持して放棄されました。

gemfileには、aがあります platform 使用できるオプション。バンドラードキュメントの例は次のとおりです。

gem "weakling",   :platforms => :jruby
gem "ruby-debug", :platforms => :mri_18
gem "nokogiri",   :platforms => [:mri_18, :jruby]

また、ブロックフォームもあります:

platforms :jruby do
  gem "foo"
end

以来、どちらのフォームもうまく機能します

グループ(バンドルインストール、bundler.setup、bundler.require)を含むすべての操作は、現在のプラットフォームと一致していないグループが明示的に除外されていない場合とまったく同じ動作します。

mysqlの宝石として、適切な名前を使用します mysql, 、あるようです jdbc-mysql Jruby用。

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