Frage

Ich habe eine Ruby/Rails devvelopment Umgebung mit rbenv, MRI Ruby 1.9.2-p290), rails 3.0.9 und SQLite3.Ich möchte die Portierung auf JRuby, aber tun Sie es so, dass ich nicht haben, etwas zu tun mehr als laufen "rbenv local jruby-1.6.4" und "rails server" in das root-Verzeichnis des Rails-Anwendung zu verwenden, es mit JRuby und "rbenv local 1.9.2-p290" und "rails Server", um es mit MRI Ruby.

Ich bin mir bewusst, dass die Edelsteine, um Zugriff auf SQLite sind verschiedene für Ruby versus JRuby, aber wie schreiben Sie die Gemfile, so dass die MRT-relevanten Edelsteine abgeholt werden, wenn der Rubin ist die MRT und die JRuby-relevanten Edelsteine abgeholt werden, wenn der Rubin ist JRuby?

Ich muss auch die Portierung auf MySQL statt SQLite.Welche Edelsteine brauche ich hier für Ruby und JRuby?

Für den Rekord, ich bin mit Ubuntu 11.04, Ruby-1.9.2-p290, JRuby 1.6.4, und Rails 3.0.9 oder 3.0.10.

War es hilfreich?

Lösung

Wir portieren eine große Rails-Anwendung zu JRuby im letzten Jahr und es war eine überraschende Menge an Arbeit.Zugegeben, ein Teil davon hatte mit der app zu tun, dass Sie eher schlecht geschrieben und mit viel legacy-code, aber immer noch.In Fall Sie Fragen sich:die meisten unserer Probleme kamen von Edelsteinen, die wir verwendet, die dann manchmal davon abhing, z.B.FFI, das nicht richtig funktioniert mit JRuby zu dieser Zeit.Ein Anschluss an Rubinius ich habe ein wenig später schien viel weniger schmerzhaft ist, aber wieder aufgegeben wurde zu Gunsten der Aufenthalt mit der MRT.

Für die Gemfile, es gibt eine platform option, die Sie verwenden können.Hier ist ein Beispiel aus der Bundler docs:

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

Es hat auch einen block bilden:

platforms :jruby do
  gem "foo"
end

Entweder form eignet sich gut, da

Alle Vorgänge, die Gruppen (bundle installieren, Bundler.setup Bundler.erforderlich) Verhalten sich genau das gleiche, als wenn alle Gruppen, die nicht zusammenpassen die aktuelle Plattform wurden explizit ausgeschlossen.

Als ein Juwel für MySQL, die ich verwenden würde, die treffend benannt mysql, es scheint ein jdbc-mysql für JRuby.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top