痛苦的人生——JRuby on Rails的开发与部署小记
最近单位领导部署了一项开发用户自助服务系统的任务,该任务有且仅有我一人独立完成——哈哈,十分美妙的工作呢。
恰巧楼主最近被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的开发与部署小记的更多相关文章
- Rails 5 开发进阶
Rails 5 开发进阶:https://www.gitbook.com/book/kelby/rails-beginner-s-guide/details cancan : http://blo ...
- Ruby on Rails框架开发学习
学习地址:http://www.ixueyun.com/lessons/detail-lessonId-685.html 一.课程概述 软件开发在经历了面向过程编程的阶段,现在正大行其道的是敏捷开发, ...
- linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区
linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区 http://blog.csdn.net/orzor ...
- Ruby on Rails入门——macOS 下搭建Ruby Rails Web开发环境
这里只介绍具体的过程及遇到的问题和解决方案,有关概念性的知识请参考另一篇:Ruby Rails入门--windows下搭建Ruby Rails Web开发环境 macOS (我的版本是:10.12.3 ...
- [技术博客] 软工-Ruby on Rails 后端开发总结分享
[技术博客] 软工-Ruby on Rails 后端开发总结分享 在这次软件编写中,我们的后端使用了Ruby on Rails (RoR)框架. Rails框架是用Ruby编写的.这意味着当我们为Ru ...
- 有意思的Python:开发和部署一览
我觉得在有时间的条件下,学习不同的开发语言,对于保持对技术的理解是有帮助的. Python是一门这样简单而且有趣的语言.网上资料已经比较多了.我这里主要对开发和部署环境所涉及的几个工具做些介绍. 1. ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- SharePoint Server 2013开发之旅(三):为SharePoint Server配置App开发、部署、管理环境
上一篇我讲解了如何利用微软提供的Office 365开发人员网站,进行在线的SharePoint App开发,这当然是不错的一个选择,因为你可以快速地进行开发和调试.(仅仅针对App开发而言).但是, ...
- 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等
http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...
随机推荐
- Hadoop MapReduce编程 API入门系列之自定义多种输入格式数据类型和排序多种输出格式(十一)
推荐 MapReduce分析明星微博数据 http://git.oschina.net/ljc520313/codeexample/tree/master/bigdata/hadoop/mapredu ...
- 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 ...
- LayoutInflater源码解析
Android使用LayoutInflater来进行布局加载,通常获取方式有两种: 第一种: LayoutInflater layoutInflater = LayoutInflater.from(c ...
- 对比JavaScript的入口函数和jQuery的入口函数
JavaScript的入口函数要等到页面中所有的资源(包括图片.文件)加载完成才开始执行. jQuery的入口函数只会等待文档数加载完成就开始执行,并不会等待图片.文件的加载.
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍
http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...
- Day 08 字符编码
字符编码 计算机基础 启动应用程序 1.双击QQ 2.操作系统接受指定然后把该操作转化为0和1发送给CPU 3.CPU接受指令然后把指令发给内存 4.内存接受指令把指令发送给硬盘获取数据 5.QQ在内 ...
- 如何安全使用公共Wifi,防止信息泄露?
购物中心,机场,餐厅,咖啡馆,图书馆,公共交通,酒店客房均提供免费无线网络连接,这些网络每天被数百万人使用.然而,大多数人没有意识到的是,免费的公共Wi-Fi并不安全.即使需要密码才能登录,这并不一定 ...
- kali 安装openvas
因为Kali Linux上没有默认安装OpenVas,因此只好自己摸索着安装了一遍. 如果没有设置过源(/etc/apt/sources.list),设置如下: deb http://http.kal ...
- MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据
场景: 表名:testsuer id name 1 小红,小李,李红,小法 要结果值为: 1 小红 1 小李 1 李红 1 小法 MYSQL函数解释 ...
- pandas之cut(),qcut()
功能:将数据进行离散化 可参见博客:https://blog.csdn.net/missyougoon/article/details/83986511 , 例子简易好懂 1.pd.cut函数有7个参 ...