写点什么

将 RoR 项目部署到 Tomcat

  • 2007-08-22
  • 本文字数:1598 字

    阅读完需:约 5 分钟

由于 Ruby 的开发者社区不断增长,其影响力越来越大,主流的开发平台 Java 和.Net 都向它抛出了橄榄枝。Sun 支持了运行于 JVM 的 JRuby ,而微软也支持了 Iron Ruby 项目。敏捷咨询公司 ThoughtWorks 已经发布了基于 JRuby 一个敏捷项目管理工具 Mingle ,使 JRuby 成为了最近社区关注的焦点。

开发一个 JRuby 项目对于大多数正在观望 Ruby 和 Rails 技术的 Java 开发者来说是一个非常有吸引力的事情,因为这样可以用平常所熟悉的环境去学习或者开发 Ruby on Rails 项目。在 JRuby 项目的主要开发者加入 Sun 的时候,Java 社区 JavaEye(使用 Rails 开发)的站长 robbin 曾经这样评价 Java 和 Ruby 的联姻:

单纯从 web 项目的开发效率上衡量,Java 已经无法和 ruby on rails 相提并论,但有趣的是 Java 并非完全站在 ruby on rails 的竞争对立面。由于 Ruby 的第三方库远远无法和 Java 相提并论,ruby 其运行效率也无法和成熟的 JVM 相比,而我们知道,JVM 从理论上来说,也并非可以仅仅支持 Java 一种语言。因而将 ruby 移植到 JVM 上面来,结合 ruby 的开发效率优势和 Java 丰富类库支持,强大 Java 运行平台优势就是顺理成章的事情了,JRuby 正是实现这一目标的框架。而 Sun 对于 JRuby 提供的强力支持,更加表达了 Java 与 ruby 携手的决心。

在 Mingle 成功发布以后,JRuby 的技术和产品都已经更接近开发者了。但是,实际上大部分的 Java 和 Ruby 社区的开发者都还没有实际使用 JRuby 开发,因为这个混合技术似乎还处于神秘状态,只有少数核心开发者知道如何使用它。最近在 Digital Sanctum 的 blog 上发布了一系列和 JRuby 相关的文章,根据里面的指导我们可以尝试将 Ruby on Rails 项目部署在 Tomcat 上,这个过程可以让我们揭下 JRuby 的神秘面纱,下面我们看看这个过程。

首先,我们回顾一下我为什么要安装 JRuby ?也就是 JRuby 能够给原有的开发方式带来哪些好处。

  1. 可以同时使用 Java 和 Ruby 的类库(gems)
  2. 使用现有的 Java 平台部署 Ruby 或 Ruby on Rails 应用程序
  3. 用 Ruby 调用或者扩展 Java 类的能力(包括 Spring-managed Java Beans)
  4. 可以使用 Ruby 以不啰嗦且更有趣的方式写代码。

在准备好实验 JRuby 后,首先需要安装 JRuby 环境,这个过程比较简单,请参考 Digital Sanctum 的这篇 JRuby 安装指南

然后,如果您想在 JRuby 上面从头开发 Rails 应用,可以按照 Digital Sanctum 描述的在 JRuby 下创建 rails 项目并部署到 tomcat 的流程学习。

但是,如果您手头已经有了一个 RoR 的项目,则您可以关注其中关键的两步:

第一步是要安装 ActiveRecord-JDBC,使用这个命令:

gem install ActiveRecord-JDBC

安装 ActiveRecord-JDBC 后,需要修改 database.yml,修改其中的适配器为“jdbc”并指定相应的 Driver 和 URL。然后继续修改 config/enviroment.rb 中的将连接适配器配置。

if RUBY_PLATFORM =~ /java/
require ‘rubygems’
RAILS_CONNECTION_ADAPTERS = %w(jdbc)
end

您还需要将 mysql-connector JDBC 驱动的 jar 文件拷贝到 /lib 和 /common/lib 下面。

第二步,是部署到 Tomcat 上的最重要的一部,打包。您需要安装一个 Rails 插件 goldspike:

jruby script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/rails-integration/plugins/goldspike

然后您只需要在您的应用程序的根目录执行一个 rake 任务就可以生成 war 包了。

rake war:standalone:create

最后将生成的 war 包拷贝到您的 /webapps 目录并启动 tomcat 就可以看到您的 RoR 应用了。

这里只摘要了将 RoR 项目部署在 Tomcat 的关键流程,很多细节这里没有引用,如果感兴趣您可以参考原文

因为 RoR 是 Ruby 的杀手应用,而 Tomcat 是 Java 平台最著名的开源 Servlet 容器,两者的强强结合其实预示了 Ruby 在传统平台(Java 及.NET)继续爆发的潜力。它允许您开发混合平台,发挥语言和平台各自的特长,混合或者融合(mush up)正是目前技术发展的一大趋势。

2007-08-22 10:261877

评论

发布
暂无评论
发现更多内容

35张图,直观理解Stable Diffusion

OneFlow

人工智能 深度学习 Stable Diffusion

企业真的需要一个私有化的即时通讯吗?

BeeWorks

微信小程序实验案例:简易成语小词典

TiAmo

小程序 微信小程序

Hackathon特别策划 | 72小时灵感冲刺,创意就该这么玩

LigaAI

敏捷开发 研发管理 hackathon 黑客马拉松 企业号 1 月 PK 榜

【从零开始学爬虫】采集丁香医生新冠问答数据

前嗅大数据

数据采集 爬虫教程 爬虫案例 爬虫工具 爬虫技术

OpenMLDB v0.7.0 发布

第四范式开发者社区

人工智能 机器学习 开源 特征 数据库·

Vue实现登录功能

Geek_7ubdnf

Vue

收官!OceanBase第五届技术征文大赛获奖名单公布!

OceanBase 数据库

数据库 oceanbase

TiDB Operator高可用配置

TiDB 社区干货传送门

集群管理 管理与运维 安装 & 部署

【社区智慧合集】TiDB 相关 SQL 脚本大全

TiDB 社区干货传送门

企业移动应用APP是否能实现统一整合与管理呢?

BeeWorks

版本控制 | 设计师和美术人员的理想版本控制软件是?

龙智—DevSecOps解决方案

版本控制 版本控制软件

Getaverse入选KuCoin Labs首批孵化项目

Geek_Web3

#区块链# 元宇宙 web3

通过TiDB Operator升级TiDB集群

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断 安装 & 部署 扩/缩容

互联网医疗月度观察:规范化、合法化的网络售药新时代到来

易观分析

互联网医疗

JDBC的基本概念

Geek_7ubdnf

Java

软件测试/测试开发 | 单元测试体系集成

测试人

软件测试 单元测试 自动化测试 JUnit 测试开发

TiDB Operator升级

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 安装 & 部署

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

九章云极DataCanvas

【1.6-1.13】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动

PyFlink 最新进展解读及典型应用场景介绍

Apache Flink

大数据 flink 实时计算

火山引擎DataTester:一次A/B测试,帮助产品分享率提升超20%

字节跳动数据平台

大数据 AB testing实战

【UE虚幻引擎】手把手教学,UE新手打包全攻略!

3DCAT实时渲染

游戏开发 虚幻引擎 虚幻引擎5 UE5 游戏开发引擎

岁末年初再添佳誉丨Kyligence 荣获多个奖项及榜单认可

Kyligence

数据分析 多维数据库

软件测试/测试开发 | 静态扫描体系集成

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

【Unity渲染】一文看懂!Unity通用渲染管线URP介绍

3DCAT实时渲染

Unity 渲染 实时云渲染 渲染服务 Unity3D

2022年IAA行业品类年度表现总结

易观分析

视频 IAA

代码质量与安全 | 展望:2023年商业软件开发的五大关键目标

龙智—DevSecOps解决方案

静态代码分析

TiCDC 集群工作过程解析

TiDB 社区干货传送门

TiDB 生产集群与加密通讯TLS的辛酸苦辣 - 工具篇

TiDB 社区干货传送门

集群管理 管理与运维 备份 & 恢复

Inspur KOS 龙蜥衍生版面向智慧新媒体转型的探索与实践 | 龙蜥案例

OpenAnolis小助手

龙蜥社区 CentOS迁移 浪潮信息 KOS 服务器操作系统

将RoR项目部署到Tomcat_Java_田乐_InfoQ精选文章