Вопрос

У меня есть среда развернения Ruby/Rails с использованием RBENV, MRI Ruby (1.9.2-P290), Rails 3.0.9 и SQLite3. Я хотел бы перенести его в Jruby, но делайте это так, что мне не нужно делать ничего большего, чем запускать «Rbenv Local jruby-1.6.4» и «Rails Server» в корневом каталоге приложения Rails для его использования с Jruby и «Rbenv Local 1.9.2-P290» и «Rails Serer», чтобы использовать его с MRI Ruby.

Я знаю, что драгоценные камни для доступа к SQLite различны для Ruby против Jruby, но как вы пишете драгоценные камни, так что драгоценные камни, связанные с МРТ Руби - это jruby?

Мне также нужно будет перенести его в MySQL вместо SQLite. Какие драгоценные камни мне нужно использовать здесь для Ruby и Jruby?

Для записи я использую Ubuntu 11.04, Ruby 1.9.2-P290, Jruby 1.6.4 и Rails 3.0.9 или 3.0.10.

Это было полезно?

Решение

В прошлом году мы перенесли большие рельсы в 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, кажется, есть jdbc-mysql для Jruby.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top