В прошлом году мы портировали большое приложение Rails на JRuby, и это был удивительный объем работы. Конечно, отчасти это связано с тем, что приложение написано довольно плохо и содержит много унаследованного кода, но все же. На случай, если вам интересно: большинство наших проблем связано с драгоценными камнями, которые мы использовали, которые иногда зависели, например, от FFI, который не работал должным образом с JRuby в то время. Порт для Рубинуса, который я сделал чуть позже, казался намного менее болезненным, но был заброшен в пользу того, чтобы остаться с МРТ.
Для Gemfile есть опция platform
, которую вы можете использовать. Вот пример из документации Bundler:
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
, для JRuby, похоже, jdbc-mysql
.