我的团队由在JRuby On Rails应用程序上一起工作的Rails和Java开发人员组成。 Rails人更喜欢使用纯Ruby解释器来开发前端应用程序。 Java人将应用程序部署到Tomcat,并将其与Spring和核心Java后端服务集成。使JRuby On Rails应用程序适合Rails和Java开发人员的模式
我们认识到哪个版本的Ruby正在执行项目,以允许Rails研究员使用纯Ruby解释器来开发它。
例如我们在调整数据库配置:
module MyWebApp
class Application < Rails::Application
def config.database_configuration
config = super
if defined? JRUBY_VERSION
config["development"]["adapter"]="jdbcsqlite3"
end
config
end
end
end
同为Gemfile中:
gem 'sqlite3'
if defined? JRUBY_VERSION
gem 'jdbc-sqlite3'
gem 'activerecord-jdbcsqlite3-adapter'
end
我们还嘲笑Java核心服务:
class DocumentServiceFactory
def build
if defined? JRUBY_VERSION
spring_context :document_service
else
mock :document_service
end
end
end
此解决方案对我们来说,但我很好奇,如果有任何一般模式(或插件,宝石,图书馆等)制作Rails应用程序兼容Ruby和JRuby?
你可以制作Java和MRI宝石,所以它应该在宝石级别处理。 – Reactormonk 2012-04-12 12:12:50
嗯...我不知道如何在宝石级别更改数据库适配器。但是,将所有MRI/JRuby切换逻辑委托给宝石将是一个优雅的解决方案。我会对这种方法进行一些研究。感谢您的建议。 – 2012-04-12 12:52:53