痛苦的人生——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代 ...
随机推荐
- HTTP请求与请求头
HTTP 的请求报文分为三个部分 请求行.请求头和请求体,格式如图:一个典型的请求消息头域,如下所示: POST/GET http://download.microtool.de:80/somedat ...
- iOS 应用开发入门指南
前言:http://www.guomii.com/posts/20250安装工具:http://www.guomii.com/posts/20255工具:http://www.guomii.com/p ...
- CSS 弹性盒
图片新窗口打开浏览
- sqoop从DB2迁移数据到HDFS
Sqoop import job failed to read data from DB2 database which has UTF8 encoding. Essentially, even th ...
- postgreSQL格式化时间的函数详解
数据类型格式化函数: PostgreSQL格式化函数提供一套有效的工具用于把各种数据类型(日期/时间.integer.floating point和numeric)转换成格式化的字符串以及反过来 ...
- 用来生成get set string 方法
https://projectlombok.org/ 主要是用来生成get set string 方法等等 原理是注解
- Http状态码大全(200、404、500等)
基本涵盖了所有问题 HTTP 400 – 请求无效HTTP 401.1 – 未授权:登录失败HTTP 401.2 – 未授权:服务器配置问题导致登录失败HTTP 401.3 – ACL 禁止访问资源H ...
- adb使用实践
目录 1. adb 端口占用 2. 查看包名和MainAcitivity =============================================================== ...
- codeforces 789 B. Masha and geometric
链接 B. Masha and geometric depression 题意 给你一个等比数列的首项和公比q,然后给出一个上限l,m个数字,在这个等比数列里,小于l且没有在m个数字里面出现过的可以写 ...
- javaee的toString的用法
toString方法返回该对象的字符串表示,如果不用toString则返回的是地址 package Xuexi; public class Person { private String name; ...