最近单位领导部署了一项开发用户自助服务系统的任务,该任务有且仅有我一人独立完成——哈哈,十分美妙的工作呢。

恰巧楼主最近被Ruby的美妙特性所迷惑,于是义无反顾地投入到Ruby on Rails的怀抱中了。

可是在系统的开发过程中,领导又做了新的指示——要和锐捷SAM系统进行一定的交互。MB!不早说,怎么办?好吧,幸好还有JRuby这个活宝能够应付差事,反正这个系统的用户数量也不多,性能应该不是问题!

由于笔者是第一次使用Rails,而且还是和JRuby搭伙,所以碰到了一些问题,所以要记录下来呢。(今天中午看到的一条微博说:如果想让一个人死,就让他去搞JRuby on Rails吧~~~我这算是自杀么~~~~)

【楼主使用的Rails 4.1,JRuby 1.7.5】

问题1. Rails如何与现有的数据库交互

除了和WebService交互外,该系统还需要和数据库进行一定的交互,而这个数据库是之前就已经存在的,因此不能使用Rails便捷的“rails g model"来实现了,怎么办呢?经过笔者多次的尝试,发现可以采用如下方式:

1. rails g model modelname

生成和数据表对应的数据模型,可以不用指定列的类型和名称,同时表的名称与类的名称也无需完全一致。

2.在modelname的类中,添加如下代码:

class Modelname < ActiveRecord::Base
self.table_name = :tablename
self.primary_key = :yonghuming
end

其中:table和:yonghuming分别指定了对应的表名与主键名称,这样就无需使用id作为表的主键了。

问题2. 使用了自定义数据表无法更新数据

楼主在使用上述模型进行更新数据的时候突然发现,该模型竟然无法更新,调用Rails的日志发现,执行的SQL语句为“UPDATE ****** WHERE yonghuming = nil”,可是我明明指定了系统的主键啊。经过反复的尝试,笔者最终确定了问题的所在——使用了自定义主键——为了解决这个问题,必须明确定义模型的主键值,即:

user = Modelname.find('key')
user.id = 'key' ...... user.update_columns({mima: mima})

问题3. JRuby on Rails的部署

可以说,JRuby on Rails的部署,是本次开发过程中最痛苦的一环了,反复的尝试、反复的测试,脑死机无数次。感觉部署中最大的问题就在于各类文件的位置存放。

1.本次部署采用warbler工具部署

2.部署前,建议将所有的jar文件存放到lib文件夹下

3.ruby文件中调用jar包时,直接使用require '****.jar'

4.另外读取的配置文件(主要是jar包要读取的配置文件),建议在warble的配置文件中取消如下注释:

config.java_classes = FileList["配置文件的相对路径"]

做好以上工作后,就基本可以避免JRuby on Rails的部署问题了(也许吧......)

痛苦的人生——JRuby on Rails的开发与部署小记的更多相关文章

  1. Rails 5 开发进阶

    Rails 5 开发进阶:https://www.gitbook.com/book/kelby/rails-beginner-s-guide/details   cancan : http://blo ...

  2. Ruby on Rails框架开发学习

    学习地址:http://www.ixueyun.com/lessons/detail-lessonId-685.html 一.课程概述 软件开发在经历了面向过程编程的阶段,现在正大行其道的是敏捷开发, ...

  3. linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区

    linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区 http://blog.csdn.net/orzor ...

  4. Ruby on Rails入门——macOS 下搭建Ruby Rails Web开发环境

    这里只介绍具体的过程及遇到的问题和解决方案,有关概念性的知识请参考另一篇:Ruby Rails入门--windows下搭建Ruby Rails Web开发环境 macOS (我的版本是:10.12.3 ...

  5. [技术博客] 软工-Ruby on Rails 后端开发总结分享

    [技术博客] 软工-Ruby on Rails 后端开发总结分享 在这次软件编写中,我们的后端使用了Ruby on Rails (RoR)框架. Rails框架是用Ruby编写的.这意味着当我们为Ru ...

  6. 有意思的Python:开发和部署一览

    我觉得在有时间的条件下,学习不同的开发语言,对于保持对技术的理解是有帮助的. Python是一门这样简单而且有趣的语言.网上资料已经比较多了.我这里主要对开发和部署环境所涉及的几个工具做些介绍. 1. ...

  7. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  8. SharePoint Server 2013开发之旅(三):为SharePoint Server配置App开发、部署、管理环境

    上一篇我讲解了如何利用微软提供的Office 365开发人员网站,进行在线的SharePoint App开发,这当然是不错的一个选择,因为你可以快速地进行开发和调试.(仅仅针对App开发而言).但是, ...

  9. 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等

    http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...

随机推荐

  1. Hadoop MapReduce编程 API入门系列之自定义多种输入格式数据类型和排序多种输出格式(十一)

    推荐 MapReduce分析明星微博数据 http://git.oschina.net/ljc520313/codeexample/tree/master/bigdata/hadoop/mapredu ...

  2. How to solve a login problem of SQL Server?

    Sometimes when we attempting to login the SQL Server 20xx Management Studio, when we type in the cor ...

  3. LayoutInflater源码解析

    Android使用LayoutInflater来进行布局加载,通常获取方式有两种: 第一种: LayoutInflater layoutInflater = LayoutInflater.from(c ...

  4. 对比JavaScript的入口函数和jQuery的入口函数

    JavaScript的入口函数要等到页面中所有的资源(包括图片.文件)加载完成才开始执行. jQuery的入口函数只会等待文档数加载完成就开始执行,并不会等待图片.文件的加载.

  5. (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

    http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...

  6. Day 08 字符编码

    字符编码 计算机基础 启动应用程序 1.双击QQ 2.操作系统接受指定然后把该操作转化为0和1发送给CPU 3.CPU接受指令然后把指令发给内存 4.内存接受指令把指令发送给硬盘获取数据 5.QQ在内 ...

  7. 如何安全使用公共Wifi,防止信息泄露?

    购物中心,机场,餐厅,咖啡馆,图书馆,公共交通,酒店客房均提供免费无线网络连接,这些网络每天被数百万人使用.然而,大多数人没有意识到的是,免费的公共Wi-Fi并不安全.即使需要密码才能登录,这并不一定 ...

  8. kali 安装openvas

    因为Kali Linux上没有默认安装OpenVas,因此只好自己摸索着安装了一遍. 如果没有设置过源(/etc/apt/sources.list),设置如下: deb http://http.kal ...

  9. MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据

    场景: 表名:testsuer id     name 1       小红,小李,李红,小法 要结果值为: 1     小红 1     小李 1     李红 1     小法 MYSQL函数解释 ...

  10. pandas之cut(),qcut()

    功能:将数据进行离散化 可参见博客:https://blog.csdn.net/missyougoon/article/details/83986511 , 例子简易好懂 1.pd.cut函数有7个参 ...