gpt4 book ai didi

mysql - 将 Ruby/Rails/MRI 应用程序移植到 JRuby

转载 作者:行者123 更新时间:2023-11-29 07:05:06 25 4
gpt4 key购买 nike

我有一个使用 rbenv、MRI Ruby (1.9.2-p290)、rails 3.0.9 和 SQLite3 的 Ruby/Rails 开发环境。我想将它移植到 JRuby,但这样做是为了让我只需在 Rails 应用程序的根目录中运行“rbenv local jruby-1.6.4”和“rails server”即可使用它使用 JRuby,以及“rbenv local 1.9.2-p290”和“rails serer”以将其与 MRI Ruby 一起使用。

我知道访问 SQLite 的 gems 对于 Ruby 和 JRuby 是不同的,但是你如何编写 Gemfile 以便在 Ruby 是 MRI 时拾取与 MRI 相关的 gems,而与 JRuby 相关的 gems 被拾取当 Ruby 是 JRuby 时?

我还需要将它移植到 MySQL 而不是 SQLite。对于 Ruby 和 JRuby,我需要在这里使用哪些 gem?

郑重声明,我使用的是 Ubuntu 11.04、Ruby 1.9.2-p290、JRuby 1.6.4 和 Rails 3.0.9 或 3.0.10。

最佳答案

我们去年将一个大型 Rails 应用程序移植到 JRuby,这是一个惊人的工作量。诚然,部分原因是该应用程序编写得相当糟糕并且有很多遗留代码,但仍然如此。如果您想知道:我们的大部分问题都来 self 们使用的 gem ,然后有时取决于例如。 FFI 当时不能正确地与 JRuby 一起工作。我后来做了一个 Rubinius 的端口,似乎没有那么痛苦,但为了继续使用 MRI 而放弃了。

对于 Gemfile,您可以使用 platform 选项。这是 Bundler 文档中的示例:

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

它还有一个 block 形式:

platforms :jruby do
gem "foo"
end

任何一种形式都很好,因为

All operations involving groups (bundle install, Bundler.setup, Bundler.require) behave exactly the same as if any groups not matching the current platform were explicitly excluded.

作为 MySQL 的 gem,我会使用恰当命名的 mysql,似乎有一个用于 JRuby 的 jdbc-mysql

关于mysql - 将 Ruby/Rails/MRI 应用程序移植到 JRuby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7802678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com