Domanda

Ho un ambiente devvelopment di Ruby / Rails utilizzando rbenv, MRI Rubino (1.9.2-P290), rotaie 3.0.9, e SQLite3. Vorrei portarlo a JRuby, ma farlo in modo tale che io non devo fare altro che correre "rbenv locale JRuby-1.6.4" e "guide del server" nella directory principale dell'applicazione Rails per usarlo con JRuby, e "rbenv locale 1.9.2-P290" e "rotaie Serer" per usarlo con la risonanza magnetica Ruby.

Sono consapevole del fatto che le gemme per l'accesso SQLite sono diversi per Ruby contro JRuby, ma come si fa a scrivere il Gemfile in modo tale che le gemme MRI rilevanti vengono prelevati quando il Ruby è la risonanza magnetica, e le gemme JRuby rilevanti sono raccolte quando la Ruby è JRuby?

Ho anche bisogno di portarlo a MySQL, invece di SQLite. Quali gemme Devo usare qui per Ruby e JRuby?

Per la cronaca, sto usando Ubuntu 11.04, Ruby 1.9.2-P290, JRuby 1.6.4, e Rails 3.0.9 o 3.0.10.

È stato utile?

Soluzione

porting una grande applicazione Rails per JRuby l'anno scorso ed è stata una sorprendente quantità di lavoro. Certo, parte di esso aveva a che fare con l'app essendo piuttosto scritto male e avere un sacco di codice legacy, ma ancora. Nel caso in cui ti chiedi: la maggior parte dei nostri problemi è venuto da gemme che abbiamo usato, che poi a volte dipendevano per esempio FFI che non ha funzionato correttamente con JRuby in quel momento. Una porta a Rubinius ho fatto un po 'più tardi sembrava molto meno dolorosa, ma è stato abbandonato a favore di stare con la risonanza magnetica.

Per la Gemfile, c'è un'opzione platform è possibile utilizzare. Ecco un esempio dalla documentazione Bundler:

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

E 'anche una forma di blocco:

platforms :jruby do
  gem "foo"
end

In ogni modulo funziona bene, in quanto

Tutte le operazioni che coinvolgono gruppi (bundle install, Bundler.setup, Bundler.require) si comportano esattamente lo stesso come se eventuali gruppi non corrispondenti la piattaforma corrente sono stati esplicitamente esclusa.

Come un gioiello per MySQL userei il mysql giustamente chiamato, sembra che ci sia un jdbc-mysql per JRuby.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top