Question

J'ai un environnement devvelopment Ruby / Rails en utilisant rbenv, IRM Ruby (1.9.2-p290), rails 3.0.9 et SQLite3. Je voudrais le porter à JRuby, mais le faire de telle sorte que je ne dois pas faire autre chose que courir « rbenv locale JRuby-1.6.4 » et « rails serveur » dans le répertoire racine de l'application Rails pour l'utiliser avec JRuby et "rbenv 1.9.2-p290 locale" et "rails sérère" pour l'utiliser avec l'IRM Ruby.

Je suis conscient que les pierres précieuses à l'accès SQLite sont différentes pour Ruby par rapport JRuby, mais comment voulez-vous écrire le Gemfile tels que les pierres précieuses IRM pertinentes sont cueillies lorsque le Ruby est l'IRM, et les pierres précieuses JRuby pertinentes sont cueillies lorsque le Ruby est JRuby?

Je vais aussi avoir besoin au port à MySQL au lieu de SQLite. Quelles gemmes dois-je utiliser ici pour Ruby et JRuby?

Pour mémoire, j'utilise Ubuntu 11.04, Ruby 1.9.2-p290, JRuby 1.6.4 et Rails 3.0.9 ou 3.0.10.

Était-ce utile?

La solution

Nous porté une grande application Rails à JRuby l'an dernier et ce fut une quantité surprenante de travail. Certes, une partie de celui-ci avait à voir avec l'application étant assez mal écrit et avoir beaucoup de code existant, mais quand même. Dans le cas où vous vous demandez: la plupart de nos problèmes proviennent de pierres précieuses que nous avons utilisé, qui alors parfois dépendaient par exemple FFI qui ne fonctionne pas correctement avec JRuby à ce moment-là. Un port à Rubinius je l'ai fait un peu plus tard semblait beaucoup moins douloureux, mais il a été abandonné au profit de rester avec l'IRM.

Pour la Gemfile, il y a une option de platform vous pouvez utiliser. Voici un exemple des Bundler docs:

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

Il a également une forme de bloc:

platforms :jruby do
  gem "foo"
end

forme fonctionne bien soit, puisque

Toutes les opérations impliquant des groupes (paquet d'installation, Bundler.setup, Bundler.require) se comportent exactement les mêmes que si un groupe ne correspond pas à la plate-forme actuelle ont été explicitement exclus.

Comme un petit bijou pour MySQL j'utiliser le mysql porte bien son nom, il semble y avoir un jdbc-mysql pour JRuby.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top